Note I don't want to use pythons shuffle as that uses the Fisher-Yates Shuffle algorithm I want to get the same result on both php and python when the seed (random.seed/srand) is the same
Мой текущий код:
def PHP_shuffle(string):
array = list(string)
shuffled_array = []
arr_length = len(array)
if (arr_length < 2):
return array
while(arr_length):
rand_key = array_keys(array[randint(0, arr_length)]
shuffled_array[rand_key] = array[rand_key]
del array[rand_key]
return shuffled_array
Это не работает, потому что array_keys не находится в python, я думаю, мне нужно как-то его перенести.
Python использовал алгоритм Mersenne Twister для randint. К счастью, он также доступен на PHP с использованием mt_rand() вместо rand (). Это должно, по крайней мере, дать вам те же «случайные» значения для данного семени!






Если оставить в стороне проблему
array_keys, проверили ли вы, чтоrandintвозвращает одно и то же число как в Python, так и в php, при условии, что они имеют одно и то же начальное число? Вероятно, стоит дважды проверить это предположение, прежде чем строить что-либо на его основе.