码迷,mamicode.com
首页 > 编程语言 > 详细

C++随机数产生

时间:2015-03-12 11:32:44      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:rand   随机数   

<span style="font-size:14px;"><span style="font-size:14px;"></pre><pre code_snippet_id="617595" snippet_file_name="blog_20150312_2_2284349" name="code" class="cpp">                                      <pre name="code" class="cpp">                                                                                    //在这里srand的作用很重要,srand()的作用是初始化随机数种子,种子的伪随机数计算的依据,
//种子相同,计算得到的随机数也是相同的,通常函数没有用到srand()而是用rand(),则是相当于调用了srand(1),
//这也解决了我上学期做最后那个记忆游戏时,每次重新运行程序时,产生的随机数都是相同的问题
//time(NULL)返回的值是自1970.1.1零点以来经过的秒数,所以每时每刻都是不同的
//
#include<stdio.h>
#include<time.h>	//time()
#include<stdlib.h>	//srand()+rand()
int main()
{
	srand(time(NULL));
	//产生[a,b]
	int m = rand() % a + b;
	printf("%d\n", m);
}</span></span>

<span style="font-size:14px;"><span style="font-size:14px;">//主要是生成随机数,但是rand()函数生成随机数区间为[0,RAND_MAX],
//RAND_MAX至少为32767(2e15-1),并且在不同条件下数值可能不同
//这里作者用了放大的方式将区间放大(代码来自刘汝佳)
#include<stdio.h>
#include<time.h>	//time()
#include<stdlib.h>	//srand()+rand()
int n = 100, m = 100000;

//这个函数是取得[0,1]区间内的实数,之后在下一个函数中扩大(n-1)倍在取整
double random()
{
	return (double)rand() / RAND_MAX;
}

int random(int m)
{
	return (int)(random()*(m - 1) + 0.5);
}

int main()
{
	srand(time(NULL));
	printf("%d %d\n", n, m);
	for (int i = 0; i < m; i++)
	{
		if (rand() % 2 == 0)
		{
			printf("A");
		}
		else
		{
			printf("B");
		}
		int X, Y;
		for (;;)
		{
			X = random(n) + 1;
			Y = random(n) + 1;
			if (X != Y)
			{
				break;
			}
		}
		printf("%d %d\n", X, Y);
	}
	return 0;
}</span></span>


C++随机数产生

标签:rand   随机数   

原文地址:http://blog.csdn.net/u013298384/article/details/44218811

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!