Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 19.08.2009, 01:25   #1
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений
(для 2,520 пользователей)
Rnd без Rnd!?

Сабж.

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

зы: Один знакомый озадачил.
(Offline)
 
Ответить с цитированием
Старый 19.08.2009, 01:31   #2
jimon
 
Сообщений: n/a
Ответ: Rnd без Rnd!?

http://ru.wikipedia.org/wiki/Генерат...лучайных_чисел
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Harter (04.12.2009)
Старый 19.08.2009, 01:36   #3
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Rnd без Rnd!?

Ненужное потёр.
brl.random
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 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
h1dd3n (19.08.2009), Harter (19.08.2009)
Старый 23.08.2009, 19:29   #4
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Rnd без Rnd!?

Для получения более не предсказуемых значений seed можно завязать на координаты мыши.
(Offline)
 
Ответить с цитированием
Старый 25.08.2009, 20:21   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Rnd без Rnd!?

Обычно завязывают на Millisecs()
Но это личное дело каждого.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 26.08.2009, 20:00   #6
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Rnd без Rnd!?

Имел ввиду можно какие-то истинно случайные числа получать, которые время от времени смещают генератор псевдослучайных чисел.
Самый простой способ координаты мыши, которые непредстазуемо меняет юзер. Еще карту звуковую используют, железяки специальные, но наверно ни кто банковские операции шифровать средствами блица не будет , просто тоже как-то над темой думал.
(Offline)
 
Ответить с цитированием
Старый 26.08.2009, 20:32   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Rnd без Rnd!?

БЛИН! Все идущие после 2ого поста слова, не несут особой смысловой нагрузки.
Как говритцо,rtfm
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Harter (04.12.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com