Сообщение Re[7]: Зaдачи от компании АBBYY от 11.04.2016 15:21
Изменено 11.04.2016 15:39 Кодт
Здравствуйте, watchmaker, Вы писали:
W>Меня в этом коде смущает две вещи:
W>При N=7, K=5 и 105 итераций значение 6 выпадает в 3.7 раза чаще чем значение 0.
Упс!
Забыл вычитать делящуюся нацело часть
В таком исполнении — получилось равномерно.
W>Меня в этом коде смущает две вещи:
W>При N=7, K=5 и 105 итераций значение 6 выпадает в 3.7 раза чаще чем значение 0.
Упс!
Забыл вычитать делящуюся нацело часть
import random
def randKgen(K):
assert K > 0
while True:
yield random.randint(0,K-1)
def randNKgen(N, K, gen = None):
assert N > 0
assert K > 0
if gen is None:
gen = randgen(K)
r, m = 0, 1
for q in gen:
while m >= N:
s = m//N*N
if r < s:
yield r%N
r, m = r//N, m//N
else:
r, m = r-s, m-s # вот это забыл сделать
r, m = r*K + q, m*K
В таком исполнении — получилось равномерно.
Re[7]: Зaдачи от компании АBBYY
Здравствуйте, watchmaker, Вы писали:
W>Меня в этом коде смущает две вещи:
W>При N=7, K=5 и 105 итераций значение 6 выпадает в 3.7 раза чаще чем значение 0.
Упс!
Забыл вычитать делящуюся нацело часть
В таком исполнении — получилось равномерно.
W>Меня в этом коде смущает две вещи:
W>При N=7, K=5 и 105 итераций значение 6 выпадает в 3.7 раза чаще чем значение 0.
Упс!
Забыл вычитать делящуюся нацело часть
import random
def randKgen(K):
assert K > 0
while True:
yield random.randint(0,K-1)
def randNKgen(N, K, gen = None):
assert N > 0
assert K > 0
if gen is None:
gen = randKgen(K)
r, m = 0, 1
for q in gen:
while m >= N:
s = m//N*N
if r < s:
yield r%N
r, m = r//N, m//N
else:
r, m = r-s, m-s # вот это забыл сделать
r, m = r*K + q, m*K
В таком исполнении — получилось равномерно.