[问题] 关于循环中使用rand()的问题

楼主: fishlinghu (令狐瑜)   2014-06-11 20:12:48
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Windows Code Blocks 12.11
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
no
问题(Question):
我用while循环执行同一个function很多次
function里面有用到rand()
我希望可以借由很多次执行来找到一个不错的解
可是发现每次执行的时候rand()的结果好像都一样
我的程式结构大致如下
main
{
srand(time(NULL));
i = 0;
while(i<100)
{
function();
++i;
}
}
function()
{
vector<int> ordered_elements;
vector<int> new;
//利用rand()选择一个经过排序的vector中的物件
//存入另一个新的vector
}
这是我主要有用到rand()的部分
我之后会拿那个随机排序的新vector去做其他的事情
后来发现每次结果都一样
我用rand()的方式就是利用rand()%ordered_elements.size()
来选择已经过排序的vector中的物件
我有听说这个限制范围的方法好像不太好
不过还是很纳闷怎么会完全一样
希望有人可以解答
或是提供一些参考资料
感谢
================================================================
抱歉傻了
刚刚看到有地方没有initialize
我的用法是对的
需要自D吗
sorry
作者: yyep (yeah)   2014-06-11 20:15:00
帮推令狐鱼 不然他其末要被当了
作者: myislin (小雨)   2014-06-11 20:23:00
想知道+1
作者: RouterHsieh (醉卧美人膝,醒掌天下权)   2014-06-11 20:47:00
C++我不知道,不过在C上面,你得用srand()设定seed如果没有先设定seed的话,rand()的结果就不是真的乱数
作者: handsome616 (豆花伯爵)   2014-06-11 20:49:00
#include <random>
楼主: fishlinghu (令狐瑜)   2014-06-11 20:57:00
有 我有在main里面先把time当成seed然后random我的compiler不support这题最后也不是要用我电脑测 所以不太敢用那个library
作者: handsome616 (豆花伯爵)   2014-06-11 21:16:00
12.11可以,不是在自己电脑上测的话就没办法
作者: diabloevagto (wi)   2014-06-11 21:44:00
我自己在用 rand 没有遇到结果都一样的情况http://www.cplusplus.com/reference/random/上面提供的那个是 c++11 的功能你 compiler 不能太旧,compiler 也要加上参数-std=c++11你也无法自d
作者: firejox (Tangent)   2014-06-12 03:09:00
好shuffle 不用吗
作者: flydragon198 (Richard)   2014-06-12 06:47:00
我记得c++使用rand会有这种状况,大学时代写作业有遇到过,不过忘记后来怎么改的就好了
作者: damody (天亮damody)   2014-06-12 18:46:00
一样才好啊 不一样就惨了

Links booklink

Contact Us: admin [ a t ] ucptt.com