
19.12.2009, 20:03
|
|
Участник форума
Регистрация: 27.04.2009
Сообщений: 189
С нами:
8968720
Репутация:
69
|
|
Сообщение от Gifts
TRX.new Зачем вы используете флоат, который А - неточный, Б - имеет ограничение на длину? Господи, еще и преобразование в строку >.<
PHP код:
# -*- coding: utf-8 -*-
import random
from math import floor
rand_array = []
count = 20000;
divider = 0xFFFFFFFF;
def gen_random_array(seed):
i = 0
while i<20000:
tmp = seed;
for i in xrange(20001):
tmp = tmp*tmp >> 16 & divider;
if tmp==0:
tmp = random.randint(1,divider-1)
seed = random.randint(1, divider)
break
if tmp in rand_array:
if i>1000: print 'Atata', str(i), str(seed)
seed = random.randint(1, divider)
break
rand_array.append(tmp)
print 'Seed: %d ' % (seed)
return rand_array
## Затравка 3455982478 - дает хороший результат для критерия хи квадрат
## Получаем массив целых чисел без повторов
rand_arr = gen_random_array(3455982478)
## Преобразуем к диапазону от 0 до 1 с равномерным распределением
for val in rand_array:
print "%F\r\n" % (val / float(divider+1))
Спасибо! Буду разбираться... не все тут понятно конечно..
|
|
|