为什么随机数生成不正确?

3
以下是我的代码:
uniform_int_distribution<>temp(-1,1);
default_random_engine e((unsigned int)time(0));
for(int a=0;a<50;a++){
cout<<temp(e)<<endl;
}

你知道,我希望数字范围是-1、0、1,这三个数字。 实际上,结果通常只包含0和1。 如果我运行这个程序几次,很少情况下-1会成为最后一个数字。 我不知道为什么,uniform_int_distribution应该包含-1,对吧?


我得到了不同的结果,也许你可以指定你使用的编译器和完整代码。default_random_engine 使用一个实现定义的引擎。 - Jesse Good
我也得到了不同的结果。相当均匀。请尝试以下链接:http://pastebin.com/gbL9j8Zx - av501
Paddy在下面给出了答案,这是VS的一个bug。非常感谢。 - jeffchen
1个回答

4

1
哦,我完全假设你正在使用Visual Studio。如果我错了,请原谅。 - paddy
哦,你说得对,我正在使用Visual Studio。非常感谢,这只是一个bug,太好了 :) - jeffchen
这真是个好问题!为什么像这样快速、简洁、毫无疑问的正确答案没有得到投票支持呢?+1。 - Fantastic Mr Fox
1
@Ben“无论何时,都不会因为迷人而收费”--《功夫熊猫》 - paddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接