Я нашел этот алгоритм для 16-битного ГПСЧ. Я не понимаю, что такое x, y и t. Что я хочу сделать, так это использовать 16-битное начальное число для генерации нескольких случайных 16-битных значений.
Если я прав, функция, показанная на этой веб-странице (приведенная ниже), является всего лишь псевдокодом, поскольку в ее нынешнем виде она всегда будет генерировать одно и то же значение, поскольку x и y являются локальными переменными для функции?
uint16_t rnd_xorshift_32() {
static uint16_t x=1,y=1;
uint16_t t=(x^(x<<5));
x=y;
return y=(y^(y>>1))^(t^(t>>3));
}
Как можно изменить приведенное выше, чтобы прочитать глобальную переменную uint_16_t random
(которая будет предварительно установлена с помощью начального числа), а затем перезаписать ее следующим случайным значением?
Редактировать: Спасибо, мое понимание статических переменных было исправлено. Буду ли я прав, если скажу, что x
и y
изначально устанавливаются в начальное число (оба в 1
в приведенном выше коде), а затем изменяются, чтобы стать последующими случайными значениями? А t
это временная переменная?
static
означает, чтоx
иy
всегда относятся к одному и тому же экземпляру переменных, они сохраняются между вызовами функций. - person   schedule 03.08.2013