随机打乱值生成器?

问题描述 投票:0回答:1

是否有一种算法可以用作伪随机值生成器,就像序列是通过洗牌产生的一样?我的意思是,在一组 k 个值和 k 个生成器调用中,每个值仅返回一次。

目标是拥有一个没有重复项的伪随机生成器。

洗牌算法是众所周知的并且有记录。它在尚未返回的值集中随机选择一个值。

当剩下的可供选择的 k 值列表可以存储在内存中时,这很简单也很好。当集合很大时,例如整个 32 位值的集合,这是不可行和最佳的。

algorithm random shuffle
1个回答
0
投票

使用加密。因为加密是一对一的,如果您从唯一的数字开始,您将得到一个唯一的数字。因此,如果您使用固定密钥加密 0、1、2、3...,您将得到一组唯一的数字。您需要跟踪的只是您在输入序列中的进度以及您正在使用的密钥。

对于 32 位数字,请使用 32 位分组密码。对于 64 位数字,请使用 64 位密码等。

对于其他范围,您可以使用某种形式的格式保留加密,可能是循环行走,仅针对给定范围内的数字。

© www.soinside.com 2019 - 2024. All rights reserved.