реклама на сайте
подробности

 
 
> Xorshift ГПСЧ, есть вопросы
zombi
сообщение Aug 27 2011, 18:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 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-х байт) лучше использовать?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ae_
сообщение Aug 28 2011, 09:57
Сообщение #2


Участник
***

Группа: Свой
Сообщений: 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 байт каждой переменной, м.б. в этих байтах шумит сильнее.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2011, 10:18
Сообщение #3


Гуру
******

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



Спасибо ae_

Цитата(ae_ @ Aug 28 2011, 12:57) *
Четыре 32-bit числа, сдвигаемые как одно целое, вместе составляют 128-bit число, в источнике указан период последовательности 2**128-1

Т.е. если взять 8-мь 32-х битных чисел то получим генератор с 2**256-1 последовательностью? и необходимо ли при этом менять количество и направление сдвигов?

Go to the top of the page
 
+Quote Post
ae_
сообщение Aug 28 2011, 10:27
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(zombi @ Aug 28 2011, 19:18) *
Т.е. если взять 8-мь 32-х битных чисел то получим генератор с 2**256-1 последовательностью? и необходимо ли при этом менять количество и направление сдвигов?

Эти, с виду простые формулы, очень чувствительны к количеству и направлению сдвигов.
Можно взять вдвое больше переменных и, применив те же правила xor и сдвигов, получить даже меньший период повторения, чем у начальной формулы.
Как находят эти "магические" формулы - я не знаю.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2011, 10:31
Сообщение #5


Гуру
******

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



Цитата(ae_ @ Aug 28 2011, 13:27) *
Как находят эти "магические" формулы - я не знаю.

ОК. в таком случае остановлюсь пока на 128 битах rolleyes.gif
Go to the top of the page
 
+Quote Post
ae_
сообщение Aug 29 2011, 06:58
Сообщение #6


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Google на запрос xorshift выдаёт второй строкой ссылку на публикацию автора алгоритма - George Marsaglia.
В статье есть варианты для последовательностей шириной 32;64;96;128,160 бит и 2**192-2**32 (практически 192 бит).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   Xorshift ГПСЧ   Aug 27 2011, 18:43
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016