
正文
c语言随机函数例题 c语言随机函数srand
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言编程题,定义函数prime()判断是否为素数,主函数中用随机函数rand()生成30个两位整?
#include stdio.h
#include math.h
#include stdlib.h
#include time.h
//判断整数是否为素数
int prime(int n)
{
int i;
for(i=2;i=(int)sqrt(n);i++)
if(n%i == 0)
return 0;
return 1;
}
int main(void)
{
int i=0, n;
srand(time(NULL));
for(i=0; i30; i++){
n = rand()%90+10;
if(prime(n)){
printf("%d ", n);
}
}
return(0);
}
示例运行结果:
F:\c_worka.exe
89 41 67 19 19 43 67 67
F:\c_worka.exe
17 79 59 13
相关问答
Q1: c语言中关于随机函数的问题
#include
"stdio.h"
#include
"stdlib.h"
#include
"time.h"
int
Rrand(int
min,int
max);
main()
{
int
i;
int
a[200];
srand((unsigned)time(NULL));
/*将当前时间设置成随机函数的种子,以每次运行产生的数都不一样
*/
for(i=0;i20;i++)
a[i]=Rrand(0,60);
for(;i60;i++)
a[i]=Rrand(59,70);
for(;i140;i++)
a[i]=Rrand(69,80);
for(;i180;i++)
a[i]=Rrand(79,90);
for(;i200;i++)
a[i]=Rrand(89,101);
for(i=0;i200;i++)
printf("%d\t",a[i]);
}
int
Rrand(int
min,int
max)//在min和max之间整数中生成一随机数并返回(不包括min和max),若不能产生随机数返回-1.
{
int
num;
if(max-min1min=0)
{
num=rand()%max;
if(nummin)
return
num;
else
return
Rrand(min,max);
}
else
return
-1;
}
Q2: C语言 :编写一个函数,通过计算机随机产生一道四则运算题
// clca4.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include stdio.h
#includestdlib.h
#includetime.h
using namespace std;
void fun(int n)
{
int i, x = 0, s = 0, a = 0, b = 0, sum = 0, count = 0;
srand((unsigned)time(NULL));
for (i = 0; in; i++)
{
a = rand() % 10;
b = rand() % 10;
x = rand() % 4; //3不对,没有除法
printf("%d\n", a);
switch (x)
{
case 0:
printf("+\n");
s = a + b;
break;
case 1:
printf("-\n");
s = a - b;
break;
case 2:
printf("*\n");
s = a*b;
break;
case 3:
printf("/\n");
s = a / b;
break;
default:
printf("Not correct!\n");
}
printf("%d\n", b);
printf("请输入计算结果:\n");
scanf_s("%d", sum); //scanf 没有 \n
if (sum == s)
{
count++;
printf("Right!\n");
}
else
printf("wrong!\n");
}
printf("%d道题目正确\n", count);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
printf("请输入需要完成的题目数量:");
scanf_s("%d", n);
fun(n);
return 0;
}
以上程序在VS2013 win32控制台测试过。。。。。。
Q3: C语言中取随机数的函数
1. 基本函数
在C语言中取随机数所需要的函数是:
int rand(void); void srand (unsigned int n);
rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:
#include stdlib.h
2. 使用方法
rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
举个例子,假设我们要取得0~10之间的随机整数(不含10本身):
/* 例1:不指定种子的值 */
for (int i=0; i10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:1 7 4 0 9 4 8 8 2 4
/* 例2:指定种子的值为1 */
srand(1); for (int i=0; i10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:1 7 4 0 9 4 8 8 2 4
例2的输出结果与例1是完全一样的。
/* 例3:指定种子的值为8 */ srand(8); for (int i=0; i10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:4 0 1 3 5 3 7 7 1 5
该程序取得的随机值也是在[0,10)之间,与srand(1)所取得的值不同,但是每次运行程序的结果都相同。
/* 例4:指定种子值为现在的时间 */ srand((unsigned)time(NULL)); for (int i=0; i10; i++) { printf("%d ", rand()%10); }
该程序每次运行结果都不一样,因为每次启动程序的时间都不同。另外需要注意的是,使用time()函数前必须包含头文件time.h。
3. 注意事项
求一定范围内的随机数。
如要取[0,10)之间的随机整数,需将rand()的返回值与10求模。
randnumber = rand() % 10;
那么,如果取的值不是从0开始呢?你只需要记住一个通用的公式。
要取[a,b)之间的随机整数(包括a,但不包括b),使用:
(rand() % (b - a)) + a
伪随机浮点数。
要取得0~1之间的浮点数,可以用:
rand() / (double)(RAND_MAX)
如果想取更大范围的随机浮点数,比如0~100,可以采用如下方法:
rand() /((double)(RAND_MAX)/100) 其他情况,以此类推,这里不作详细说明。
Q4: c语言编程序,调用随机函数,产生30个100到200之间的随机整数,并计算其平均值
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
int temp;
float sum = 0;
srand((unsigned)time(NULL));
for(int i = 0; i 30; i++)
{
temp = rand()%100 + 100;
sum += (float)temp;
printf("No.%d %d\n", i+1, temp);
}
printf("AVER = %f\n", sum /30);
}
Q5: C语言的随机函数问题rand(),srand()/1--100的随机数取5个
确实是时间太短,srand( (unsigned)time( NULL ) )就是用时间来播种,而这个函数在同一秒内播的种是完全一样的。每一次srand都会重新播种,都会从第一个随机数开始,所以这里的结果是一样的。
而播种时切记不要这么写(我这样写吃过很大亏,调了半天才发现),一个程序里播一次种就足够了,所以一般习惯main里面第一句就是srand
放在for语句前,先播种。而第一个种子和第二个是不一样的,所以即使不到一秒也没问题。
c语言随机函数例题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言随机函数srand、c语言随机函数例题的信息别忘了在本站进行查找喔。







