C语言取随机数,python判断素数代码

http://www.itjxue.com  2023-01-18 05:46  来源:未知  点击次数: 

C语言中获得随机数的方法是什么?

可以使用库函数rand()。

rand声明于stdlib.h,其原型为

int rand(void);

功能为返回一个随机整型值。在C语言中,该值是一个正数值。

在需要限定获取到的随机数范围时,如范围要求为[m,n] mn且m,n均为整数,可以用

rand()%(n-m+1)+m

的形式进行获取。原理为:

%为取余计算,当%k时,结果是[0,k-1]之间的数值;

于是rand()%(n-m+1) ∈ [0, n-m];

所以rand()%(n-m+1)+m ∈ [0+m, n-m+m]=[m,n]。

C语言中获得随机数的方法

C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。

(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

例如:#includestdio.h

#includestdlib.h

void main()

{

for(int i=0;i10;i+)

printf("%d\n",rand());

} (2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数:例如:随机生成10个0~100的数:

#includestdio.h

#includestdlib.h

#define random(x) (rand()%x)

void main()

{

for(int x=0;x10;x++)

printf("%d\n",random(100));

} (3)但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。srand()函数定义 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值来当做seed

如果你用time(0)的话,要加入头文件#includetime.h例如:

#includestdio.h

#includestdlib.h

#includetime.h

#define random(x) (rand()%x)

void main()

{ srand((int)time(0));

for(int x=0;x10;x++)

printf("%d\n",random(100));

}这样两次运行的结果就会不一样了!!

C语言抽取随机数怎么编写

源程序代码以及算法解释如下:

产生1-10随机数程序:

#include iostream

#include time.h

using namespace std;

int main()

{

const int n = 10;//定义随机数个数

int number[n] = { NULL };//定义随机数存储的数组

srand((unsigned)time(NULL));//初始化随机函数

number[0] = rand() % n;//第一个随机数无需比较

cout number[0] " ";

for (int i = 1; i n; i++)//其余随机数循环产生

{

int j = 0;

number[i] = rand() % n;//产生随机数

while (1)

{

if (number[i] == number[j])//若有相同则继续循环重新安排随机数

{

number[i] = rand() % n;//产生随机数

j = 0;//若遇到相同的就从头遍历

continue;

}

if (j == (i - 1))//若遍历完就跳出

break;

j++;

}

cout number[i] " ";

}

cout endl;

return 0;

}

程序运行结果如下:

扩展资料:

利用vector进行随机数输出:

#include iostream

#include vector

#include time.h

using namespace std;

int main()

{

const int n = 10;

int randnum;

vectorint number;

for (int i = 0; i n; i++)

{

number.push_back(i + 1);????//从尾部添加元素

cout number[i] " ";

}

cout endl;

srand((unsigned)time(NULL));

for (int j = 0; j n; j++)?????//其余随机数循环产生

{

randnum = rand() % (n - j);????//rand函数生成的随机数是0-(n-1)

cout number.at(randnum) " ";

number.erase(number.begin() + randnum);

}

cout endl;

return 0;

}

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) 其他情况,以此类推,这里不作详细说明。

怎样用c语言取一个随机数

#include

#include

#include

int

main()

{

int

num;

srand(time(0));

//必须要用这个

num

=

1

+

rand()

%

10;

//在[1,10)中随机出一个数字

printf("%d",num);

return

0;

}

头文件不能少

如何用c语言产生一定范围内的随机数?

利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。

在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;

4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

下面是0~32767之间的随机数程序:

#include stdlib.h

#include stdio.h

#include time.h ? ? ? ? ? // 使用当前时钟做种子

void main(void)

{int i;

srand((unsigned)time( NULL ) ); ? ? ? ? ?// 初始化随机数

for(i = 0; i 10;i++) ? ? ? ? ? ? ? ? ? ? ? ? ?// 打印出 10 个随机数

printf("%d\n", rand() );

}

根据上面的程序可以很容易得到0~1之间的随机数:

#include stdlib.h

#include stdio.h

#include time.h

int main( )

{int i;

srand((unsigned)time( NULL ) );

for(i = 0; i 10;i++)

printf("%5.2f\n", rand()/32767.0);

}

而产生1~100之间的随机数可以这样写:

#include stdlib.h

#include stdio.h

#include time.h

int main( )

{int i;

srand((unsigned)time( NULL ) );

for(i = 0; i 10;i++)

printf("%d\n", rand()%100+1);

}

扩展资料:

C语言高效编程技巧:

一:以空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题

二:数学方法解决问题

数学是计算机之母,没有数学的依据和基础,就没有计算机发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。

三:使用位操作

实现高效的C语言编写的第三招----使用位操作,减少除法和取模的运算。

在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效提高程序运行的效率。

参考资料来源:百度百科-C语言

(责任编辑:IT教学网)

更多

推荐广告特效文章