常用的几个函数
来源:互联网 发布:淘宝付了定金怎么退 编辑:程序博客网 时间:2024/04/27 21:47
随机数的产生
大多数情况下使用函数 srand() 和 rand() 即可搞定,这两个函数包含于头文件 <cstdlib> 中。为了取得可变的随机码,必须在使用rand()前调用srand()函数来取得随机种子,这样编译后的程序才在每次运行时可以产生不同的随机数。
例子:
srand( ( unsigned ) time( NULL ) ) ;
一般取系统时间为种子,time() 函数包含于头文件<ctime>中,注意添加。需要注意的一点是time()函数取的时间最小间隔为1s,也可以用clock()函数,它的时间间隔为1ms。
rand();
可以取到的随机整数范围是0到RAND_MAX,RAND_MAX在都文件中用宏定义的,一般为28。
rand()%100;
表示取0到99间的随机整数。但此方法并不是很好,取出的各个数并非等概率。更好的方法是在RAND_MAX
中设置几个等长段,这样随机数调入段中概率才是均等的。
// return a random integer in the range `[0,' `n)'
int nrand(int n)
{
if (n <= 0 || n > RAND_MAX)
throw domain_error("Argument to nrand is out of range");
const int bucket_size = RAND_MAX / n;
int r;
do r = rand() / bucket_size;
while (r >= n);
return r;
}
下面附一个:
求区间[0,n)你可能认为rand()%n就足够了,但在实际中这个技巧会因为两个原因而导致失败。
1、rand()函数真正返回的是伪随机数。在除数是小整数时,很多c++系统的伪随机数生成器生成的余数并不是非常随机
化的。比如,rand()函数产生的连续结果常常会交替出现奇数和偶数。如果是那样的话,如果n=2,rand()%n的连续结
果就将交替出现0和1。
2、如果n的值很大,并且RAND_MAX不可被n整除的话,一些余数就会过于频繁的出现。比如,假定RAND_MAX是
32767,n是20 000。在这种情况下,rand()函数就会有两种截然不同的值,它们会使得rand()%n成为10 000(也就是
rand()为10 000和30 000),但是rand()只有一个值能使rand()%n成为15 000(也就是rand()为15 000)。因此,运行rand%n
的天真系统在对rand()%20 000时,生成10 000的次数会是生成15 000的次数的两倍。
- 几个常用的函数
- 常用的几个函数
- 几个常用的日期函数
- 几个常用的日期函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 几个常用的Javascript函数
- 转载 Oracle分析函数参考手册
- 比较程序集名称时发生了处理器结构不匹配: Ref x86,Def MSIL
- onclick,onclientclick和onserverclick的区别
- 读取***.properties配置文件里数据的方法
- string对象是属性和方法
- 常用的几个函数
- oracle Exp/IMP命令详解
- spring中使用proxool作数据源连接池的配置
- Jpivot中MDX编辑器中文乱码问题解决方案
- ORACLE 多实例监听的配置
- qmail之邮件转发规则
- word2003多级编号
- servlet-api-2.4.jar not loaded 或者 页面无任何内容显示
- GenericObjectPool