forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Rnd без Rnd!? (http://forum.boolean.name/showthread.php?t=8949)

Harter 19.08.2009 01:25

Rnd без Rnd!?
 
Сабж.

Как же сделать процесс генирирования случайных чисел без Rnd\Rand и т. п.?

зы: Один знакомый озадачил.

jimon 19.08.2009 01:31

Ответ: Rnd без Rnd!?
 
http://ru.wikipedia.org/wiki/Генерат...лучайных_чисел

Randomize 19.08.2009 01:36

Ответ: Rnd без Rnd!?
 
Ненужное потёр.
brl.random
PHP код:

Global rnd_state=$1234
Const RND_A=48271,RND_M=2147483647,RND_Q=44488,RND_R=3399


Function RndFloat#()
    
rnd_state=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
    If 
rnd_state<0 rnd_state=rnd_state+RND_M
    
Return (rnd_state $ffffff0) / 268435456#  'divide by 2^28
End Function


Function 
RndDouble!()
    Const 
TWO27! = 134217728.0
    
Const TWO29! = 536870912.0

    rnd_state
=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
    If 
rnd_state<0 rnd_state=rnd_state+RND_M
    Local r_hi
! = rnd_state & $1ffffffc

    rnd_state
=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
    If 
rnd_state<0 rnd_state=rnd_state+RND_M
    Local r_lo
! = rnd_state & $1ffffff8

    
Return (r_hi r_lo/TWO27)/TWO29
End 
Function

Function 
Rnd!( min_value!=1,max_value!=)
    If 
max_value>min_value Return RndDouble()*(max_value-min_value)+min_value
    
Return RndDouble()*(min_value-max_value)+max_value
End 
Function

Function 
Randmin_value,max_value=)
    
Local range=max_value-min_value
    
If range>Return IntRndDouble()*(1+range) )+min_value
    
Return IntRndDouble()*(1-range) )+max_value
End 
Function

Function 
SeedRndseed )
    
rnd_state=seed & $7fffffff  
    
If rnd_state=Or rnd_state=RND_M rnd_state=$1234
End 
Function

Function 
RndSeed()
    Return 
rnd_state
End 
Function 


Damp 23.08.2009 19:29

Ответ: Rnd без Rnd!?
 
Для получения более не предсказуемых значений seed можно завязать на координаты мыши.

Randomize 25.08.2009 20:21

Ответ: Rnd без Rnd!?
 
Обычно завязывают на Millisecs()
Но это личное дело каждого.

Damp 26.08.2009 20:00

Ответ: Rnd без Rnd!?
 
Имел ввиду можно какие-то истинно случайные числа получать, которые время от времени смещают генератор псевдослучайных чисел.
Самый простой способ координаты мыши, которые непредстазуемо меняет юзер. Еще карту звуковую используют, железяки специальные, но наверно ни кто банковские операции шифровать средствами блица не будет :), просто тоже как-то над темой думал.

impersonalis 26.08.2009 20:32

Ответ: Rnd без Rnd!?
 
БЛИН! Все идущие после 2ого поста слова, не несут особой смысловой нагрузки.
Как говритцо,rtfm


Часовой пояс GMT +4, время: 04:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot