|
Xorshift ГПСЧ, есть вопросы |
|
|
|
Aug 27 2011, 18:43
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Натолкнулся вот на такой ГПСЧ : Код uint32_t xor128(void) { static uint32_t x = 123456789; static uint32_t y = 362436069; static uint32_t z = 521288629; static uint32_t w = 88675123; uint32_t t; t = x ^ (x << 11); x = y; y = z; z = w; return w = w ^ (w >> 19) ^ (t ^ (t >> 8)); } Возникло несколько вопросов: 1: x = 123456789; y = 362436069; z = 521288629; w = 88675123; Это ,я так понял, десятичные начальные значения переменных? 2: могут ли эти начальные значения быть любыми (кроме 0 конечно) или в них есть тайный смысл? 3: результатом работы ГПСЧ есть 32-х битное число, а если мне достаточно одного байта то какой (из 4-х байт) лучше использовать?
|
|
|
|
|
 |
Ответов
|
Aug 28 2011, 09:57
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(zombi @ Aug 28 2011, 03:43)  x = y; y = z; z = w; 1) да 2)Четыре 32-bit числа, сдвигаемые как одно целое, вместе составляют 128-bit число, в источнике указан период последовательности 2**128-1, т.е. в этих четырёх 32-bit переменных пробегают все значения, кроме 0,0,0,0. т.е. в качестве исходных значений можно взять любые, кроме 0,0,0,0. 3) Наверное любые, но сдвиги и маски затрагивают в основном 2 и 3 байт каждой переменной, м.б. в этих байтах шумит сильнее.
|
|
|
|
|
Aug 28 2011, 10:27
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(zombi @ Aug 28 2011, 19:18)  Т.е. если взять 8-мь 32-х битных чисел то получим генератор с 2**256-1 последовательностью? и необходимо ли при этом менять количество и направление сдвигов? Эти, с виду простые формулы, очень чувствительны к количеству и направлению сдвигов. Можно взять вдвое больше переменных и, применив те же правила xor и сдвигов, получить даже меньший период повторения, чем у начальной формулы. Как находят эти "магические" формулы - я не знаю.
|
|
|
|
Сообщений в этой теме
zombi Xorshift ГПСЧ Aug 27 2011, 18:43   zombi Цитата(ae_ @ Aug 28 2011, 13:27) Как нахо... Aug 28 2011, 10:31    ae_ Google на запрос xorshift выдаёт второй строкой сс... Aug 29 2011, 06:58    777777 Цитата(zombi @ Aug 28 2011, 14:31) ОК. в ... Aug 30 2011, 09:15 xemul Цитата(zombi @ Aug 27 2011, 22:43) 3: рез... Aug 30 2011, 10:10 zombi Цитата(777777 @ Aug 30 2011, 12:15) Я бы ... Sep 1 2011, 06:20 rx3apf Отмечу, что у xorshift великолепное распределение,... Sep 1 2011, 07:36 zombi Цитата(rx3apf @ Sep 1 2011, 10:36) Отмечу... Sep 1 2011, 08:27 Dr.NoA Что-то я не пойму следующее. Если автору темы треб... Sep 1 2011, 12:06 ae_ Цитата(Dr.NoA @ Sep 1 2011, 21:06) Что-то... Sep 1 2011, 12:34 zombi Цитата(Dr.NoA @ Sep 1 2011, 15:06) Что-то... Sep 1 2011, 16:45  ae_ Цитата(zombi @ Sep 2 2011, 01:45) По боль... Sep 1 2011, 23:03   zombi Цитата(ae_ @ Sep 2 2011, 02:03) Можно про... Sep 2 2011, 06:14  Dr.NoA Цитата(zombi @ Sep 1 2011, 20:45) Т.е. че... Sep 2 2011, 14:01   zombi Цитата(Dr.NoA @ Sep 2 2011, 17:01) Но опя... Sep 2 2011, 16:13 zombi Сутки тестировал.
Результат превзошел все ожидания... Sep 3 2011, 17:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|