热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

随机混洗C数组(每次不同)

我想在C中对数组进行混洗,并且每次运行程序时,我都希望进行不同的随机混洗.我有myArray的长度.目前,我正在使用:random_shuffle(myArray,myArray+

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

random_shuffle(myArray, myArray+N)

但这每次都会产生相同的改组.为了包括一个随机数,我尝试了:

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

但我得到错误,无法将参数3从’int’转换为’int&’.

我考虑改用基于this example的shuffle函数,但是看来我使用的是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)一样-也就是说,您每次运行程序时,都使用相同的值隐式地为它播种,这将在每次执行程序时产生相同的随机序列.


推荐阅读
author-avatar
k婷妈咪1_1997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有