关于随机数

今天在设计一个随机数时遇到了一些问题:

1
2
vector<int> array(10);
int index = floor(CCRANDOM_0_1() * array.size)

就是xcode里上面简单的几行代码,让我纠结很久。经过测试,主要原因是,xcode里float或者double转换成int时不能正确转换,至于原因,在下搜索很久都没找到答案, 暂时就这样不了了之吧。
嗯,于是发现了c++ 11关于随机数的新特性,上述代码改为如下:

1
2
3
4
5
6
#include <random>

srand(time(NULL));
std::default_random_engine e;
std::uniform_int_distribution<unsigned> u(0, array.size());
auto index = u(e);

路漫漫其修远兮。