gpt4 book ai didi

c++ - 随机洗牌 C++ 数组(每次不同)

转载 作者:行者123 更新时间:2023-11-30 01:16:21 25 4
gpt4 key购买 nike

我想在 C++ 中对一个数组进行洗牌,每次运行程序时,我都希望进行不同的随机洗牌。我有 myArray 的长度。目前我正在使用:

random_shuffle(myArray, myArray+N)

但这每次都会产生相同的洗牌。为了包含一个随机数,我尝试了:

random_shuffle(myArray, myArray+N, rand()%i)

但我收到错误消息无法将参数 3 从“int”转换为“int&”

我考虑过使用 shuffle 函数,基于 this example ,但我似乎无法使用 2011 年之前的编译器。

抱歉,如果这是一个非常愚蠢的问题。我在 SO 上找不到关于这个特定问题的任何内容,谷歌只是告诉我创建改组算法的方法。

最佳答案

random_shuffle(myArray, myArray+N) 将使用 std::rand()以获得随机数。如果您希望每次程序运行时随机序列都不同,您需要先使用 std::srand() 为随机生成器播种。 .使用当前系统时间为随机数生成器提供种子是很常见的,这对于与安全无关的目的来说通常已经足够了。您只需在程序执行期间执行一次。

std::srand(std::time(0));

如果在第一次调用 std::rand() 之前没有调用 std::srand(),则 std::rand( ) 的行为就像您调用了 std::srand(1) 一样——也就是说,您在每次程序运行时隐式地为它植入相同的值,这将产生相同的结果程序每次执行的随机顺序。

关于c++ - 随机洗牌 C++ 数组(每次不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com