首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免使用rand和srand得到重复的数字?

要避免使用rand和srand得到重复的数字,可以采用以下方法:

  1. 使用更高级的随机数生成器:rand函数是C/C++标准库中提供的伪随机数生成器,其生成的随机数序列是有限的且可预测的。为了避免重复的数字,可以使用更高级的随机数生成器,如C++11引入的random库中的随机数引擎和分布函数,或者使用第三方的随机数库,如Boost.Random库。
  2. 设置随机数种子:srand函数用于设置随机数生成器的种子,如果每次使用相同的种子调用srand函数,那么每次生成的随机数序列都是相同的。为了避免重复的数字,可以使用不同的种子来初始化随机数生成器,可以使用时间戳作为种子,确保每次生成的随机数序列都是不同的。
  3. 使用集合或哈希表:如果需要生成一系列不重复的随机数,可以使用集合或哈希表来存储已生成的随机数,每次生成新的随机数时,先检查是否已存在于集合或哈希表中,如果存在则重新生成,直到生成一个不重复的随机数。
  4. 使用洗牌算法:洗牌算法是一种将元素随机打乱顺序的算法,可以用于生成不重复的随机数序列。可以将需要生成随机数的范围作为元素,使用洗牌算法打乱顺序,然后按顺序取出元素作为随机数。

总结起来,避免使用rand和srand得到重复的数字的方法包括使用更高级的随机数生成器、设置不同的随机数种子、使用集合或哈希表存储已生成的随机数、使用洗牌算法生成不重复的随机数序列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • rand()函数的用法[通俗易懂]

    C++中rand() 函数的用法 1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 2、如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100; 这样,num的值就是一个0~99中的一个随机数了。 3、如果要产生1~100,则是这样:int num = rand() % 100 + 1; 4、总结来说,可以表示为:int num = rand() % n +a; 其中的a是起始值,n-1+a是终止值,n是整数的范围。 5、一般性:rand() % (b-a+1)+ a ; 就表示 a~b 之间的一个随机整数。 由于随机数范围RAND_MAX(win下为32767)与编译器平台有关,如果我们需要更大范围的随机数,可以直接想乘等办法. (int)round(1.0rand()/RAND_MAX(b-a+1)+a)

    01
    领券