C++python 随机数数问题

C++实现无重复随机数的高效算法
来源:易贤网&& 阅读:482 次&&日期: 11:35:44
温馨提示:易贤网小编为您整理了“C++实现无重复随机数的高效算法”,方便广大网友查阅!
函数permutation用于产生从0到n-1的无重复随机数,并将结果保存到数组z_array中。程序中使用buffer作为已使用随机数的记录数组,假定下一次产生一个随机数的(产生随机数的范围在不断缩小:rand()%(n-i))为z,遍历buffer,统计不大于该随机数且已使用过的随机数的个数,记为k,将z+k添加进z_array中,作为产生的下一个随机数,如此重复。这样便生成了从0到n-1的无重复的随机数。void permutation(int n, int *z_array){ int i, j, k, int buffer[N];
/* 初始化数组 */ for (i=0; i
更多信息请查看
更多信息请查看
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
易贤网手机网站地址:
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
相关阅读 & & &
&&& &nbsp&nbsp&nbsp会员注册
本站不参与评论!()
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款关于C++中随机数的有关问题 - C++当前位置:& &&&关于C++中随机数的有关问题关于C++中随机数的有关问题www.MyException.Cn&&网友分享于:&&浏览:2次关于C++中随机数的问题random产生的是伪随机数
如果需要种子,srand()又和时间有关
我现在所用的编译器又不支持C++11
所以求各位大侠
如果快速生成大量随机数,有没有改良的方法或者思路???------解决方案--------------------CoCreateGuid
Creates&a&GUID,&a&unique&128-bit&integer&used&for&CLSIDs&and&interface&identifiers.
HRESULT&CoCreateGuid(
&&GUID&&*pguid&&//Pointer&to&the&GUID&on&return
[out]&Pointer&to&the&requested&GUID&on&return.&
Return&Value
The&GUID&was&successfully&created.&
Win32&errors&are&returned&byUuidCreate&but&wrapped&as&an&HRESULT.
The&CoCreateGuid&function&calls&the&RPC&function&UuidCreate,&which&creates&a&GUID,&a&globally&unique&128-bit&integer.&Use&the&CoCreateGuid&function&when&you&need&an&absolutely&unique&number&that&you&will&use&as&a&persistent&identifier&in&a&distributed&environment.To&a&very&high&degree&of&certainty,&this&function&returns&a&unique&value&–&no&other&invocation,&on&the&same&or&any&other&system&(networked&or&not),&should&return&the&same&value.
&&Windows&NT:&Use&version&3.1&or&later.
&&Windows:&Use&Windows&95&or&later.
&&Windows&CE:&Unsupported.
&&Header:&Declared&in&objbase.h.
&&Import&Library:&Included&as&a&resource&in&ole32.dll.
UuidCreate&
&------解决方案--------------------srand用GetTickCount()设置
GetTickCount返回开机时间的毫秒数------解决方案--------------------#pragma&comment(lib,"ole32")
#include&&stdio.h&
#include&&time.h&
#include&&windows.h&
int&main()&{
&&&&int&i,d[4];
&&&&time_t&t;
&&&&t=time(NULL);
&&&&for&(i=0;i&;i++)&{
&&&&&&&&CoCreateGuid((GUID&*)&d[0]);
&&&&&&&&if&(i%)&{
&&&&&&&&&&&&printf("%08d:%08x&%08x&%08x&%08x\n",i,d[0],d[1],d[2],d[3]);
&&&&printf("Generate&8bit&random&number&for&%d&seconds.\n",(int)(time(NULL)-t));
&&&&return&0;
//第一次运行
//fe896ab&4befbe&8947a3bc
//cf4cd3&4b155a4c&b484630
//ebe&fccd052f
//e2ee4&41c1bdc1&6bd46288
//c6de15c&495d233b&02db0fa4&66f854f4
//:df90cc35&4ab32a6b&ab630bae&768d0567
//f443a32&4e659bf&e9ce366d
//ab7&ddc932bf&d72d6b19
//c78d67f&49fd8d70&&727c1b1f
//:bddae902&422d3c70&8ca4cdbb&654b91f8
//04ef9&4e3e87a6&d7e2ecbe&b2b09108
//aa2bbd&4612be3b&c4a917be&479ee08a
//7f0ca&494dc70f&4b7f4
//b90b9&&ea8e2def
//cbf81a&ce9c9a&372ea41c
//:fc9478ec&4e3fd9bc&b76eda
//b2e691&&&7b52b766
//cfb8626e&c15a73a8&9eda30af
//e78a9&292ee
//cfe1e8&44b2df4c&4beaceae&110f8ec6
//bcfa2&40abeb3
//ae1f13&&e4a40dba&5ebe7c45
//acc30&b48acd92&90036ebf
//530fd&&7876c68e&db62cb19
//fd5ebc&68a2fbb8&b37b2fff
//e35d147&44095b0a&fc79c
//49ad6&430c8f61&f4ca5
//49&&28ddd458
//acbe8af&42e6ec38&6b57c282&de1e0548
//224c4&45cce683&4586bba7&
//2e37d&4e791c20&aa3f83
//ab7b1d&d07fa6&92279a34
//:ef51b7d3&4c1ce289&f460e4ab&18eda1b6
//ebe5c07&4f12e38a&75ced399&356fc7f5
//7aa00&4f578bff&966288ad&0d41b236
//c91&b85478
//ab0f6fc&4aa416b3&8eb6bdce
//b46f9&430ab9&852a699d
//f40&a9ce6291&3cbe141b
//:cb3c837a&41a2d318&74856bbe&a005b46b 共&5&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有下次自动登录
现在的位置:
& 综合 & 正文
关于C/C++中随机数的算法问题
昨天写了一段程序,是关于产生一段范围内随机数的问题。一下是一段代码:
1 #include &stdlib.h&
2 #include &stdio.h&
4 //#ifdef RAND_MAX
5 //#undef RAND_MAX
6 //#endif
8 //#define RAND_MAX 9999
9 int main()
int randomNum,i=0;
time_t nowT
//time(&nowTime);
//srandom(nowTime);
while(i & 100){
time(&nowTime);
srandom(nowTime + randomNum +i);
randomNum =1 + (int)(100.0 * (random()/(RAND_MAX + 1.0)));
printf("Now we get the random is %d/n",randomNum);
printf("The following is the maximum random number:%d/n",RAND_MAX);
不知这个是不是有问题!
大家都是怎么产生随机数的?
如果我想每次产生的随机数都是2位的或都是4位的(例如范围是),应该怎么实现?
【上篇】【下篇】C++中生成随机数的问题? - 知乎53被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答int GetRandom() {
int rnum = 0;
#if defined _MSC_VER
#if defined _WIN32_WCE
CeGenRandom(sizeof(int), (PBYTE)&rnum);
HCRYPTPROV hProvider = 0;
const DWORD dwLength = sizeof(int);
BYTE pbBuffer[dwLength] = {};
DWORD result =::CryptAcquireContext(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT);
assert(result);
result = ::CryptGenRandom(hProvider, dwLength, pbBuffer);
rnum = *(int*)pbBuffer;
assert(result);
::CryptReleaseContext(hProvider, 0);
#elif defined __GNUC__
int fd = open("/dev/urandom", O_RDONLY);
if (fd != -1) {
(void) read(fd, (void *) &rnum, sizeof(int));
(void) close(fd);
return rnum;
我这个例子可以在Windows桌面、WinCE和LInux平台运行,输出是整型随机数,但是稍加修改可以生成任意长度的随机数。174 条评论分享收藏感谢收起

我要回帖

更多关于 js 随机数 的文章

 

随机推荐