Помогите разобраться с программой, пожалуйста [RNG, SSE2]
Stores 128-bit value.2. если это нормальный random, то - да, можно использовать только часть битов.
Странно, второй вопрос же чисто математический. Можно доказать, что равномерная распределенность между 0 и 2^k-1 для любого k равносильна одинаковой и независимой распределенности каждого из k битов. Отсюда следует, что можно использовать любые 8 бит.
сигнатура у функции, конечно, ужасная. Лучше уж честно написать void*. А то передашь адрес переменной на стеке у получишь красивые спецэффекты.
Огромное спасибо.
Лучше уж честно написать void*И чем это честнее и лучше? Если пишется выровненный __int128, надо так и писать.
Тем, что если написано unsigned int*, то однозначно намекается на то, что запишется sizeof(unsigned). А если void* — это уже повод задуматься. Тем лучше. Настоящий тип написать еще лучше, да.
если написано unsigned int*, то однозначно намекается на то, что запишется sizeof(unsigned)а как тогда намекнуть, что запишется массив из unsigned ?
передать unsigned *length
Оставить комментарий
dimi61
Программа описана в этой статье: http://software.intel.com/en-us/articles/fast-random-number-...Вот в таком виде я ее использую в GCC:
Вопросы:
1) сгенерированное значение будет записываться по адресу, где, с точки зрения функции, лежит 128-битное целое? Или 32-битное? Сколько бит туда запишется?
2) Если, допустим, меня устроят 8-битные псевдослучайные числа, причем супервысокой случайности от них не требуется (например, уровня стандартного rand вполне сойдет). Могу ли я писать в 32-битное (128-битное) целое сгенеренное число, а затем забирать из него четверку (или 16) чаров и трактовать их как случайные?