c语言我想取一个1-28随机的一个数b,把这个过程插入已经写好的程序,但是不会用rand函数,求解

供稿:hz-xin.com     日期:2025-01-15
C语言中取随机数的函数

1. 基本函数

在C语言中取随机数所需要的函数是:

   int rand(void); void srand (unsigned int n);

rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:

   #include



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; i<10; i++) { printf("%d ", rand()%10); }
    每次运行都将输出:1 7 4 0 9 4 8 8 2 4
   /* 例2:指定种子的值为1 */
   srand(1); for (int i=0; i<10; 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; i<10; 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; i<10; 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) 其他情况,以此类推,这里不作详细说明。

1、可以使用while函数,对随机进行循环

2、直接在随机数中去掉170这个值

扩展资料:
除了randint,random模块中比较常用的方法还有:
1、random.random()
生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。
2、random.uniform(a, b)
生成a、b之间的随机浮点数。不过与randint不同的是,a、b无需是整数,也不用考虑大小。
random.uniform(2.2, 6)
random.uniform(6,2.2)
这两种参数都是可行的。
3、random.choice(seq)
从序列中随机选取一个元素。seq需要是一个序列,比如list、元组、字符串。
random.choice([1, 4, 7, 2, 5, 8]) #list
random.choice('hello') #字符串
random.choice((1, 2, 3)) #元组
都是可行的用法。

rand函数会返回一个 [0, RAND_MAX] 间的随机整数,RAND_MAX至少为32767。

如下代码,生成一个随机整数数组

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

#define ARR_LEN 255 /* 数组长度上限 */
#define elemType int /* 元素类型 */

/* 生成n项min~max范围的随机数并存入数组randArr */
void randomArray (elemType randArr[], int n, elemType min, elemType max) {
int i;
srand ((unsigned)time(NULL)); /* 用时间做种,每次产生随机数不一样 */
for (i=0; i<n; i++)
randArr[i] = rand() % (max-min+1)+min; /* 产生min~max的随机数 */
}

/*打印数组*/
/* elemType arr[]: 打印目标数组; int len: 元素个数 */
void printArray (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d", arr[i]);
putchar ('
');
}

int main (void) {
elemType arr[ARR_LEN];

randomArray (arr, 10, 1, 50); /* 随机生成10项1~50的数组 */
printArray (arr, 10);

getch (); /*屏幕暂留*/
return 0;
}


c语言我想取一个1-28随机的一个数b,把这个过程插入已经写好的程序,但...
srand ((unsigned)time(NULL)); \/* 用时间做种,每次产生随机数不一样 *\/for (i=0; i<n; i++)randArr[i] = rand() % (max-min+1)+min; \/* 产生min~max的随机数 *\/}\/*打印数组*\/\/* elemType arr[]: 打印目标数组; int len: 元素个数 *\/void printArray (elemType arr[], ...

matlab或者C语言产生(1,28)中的5个随机数
代码1:\/\/随即出来的5个数,有可能重复#include<stdio.h>int main(){int num[5];int i;for(i=0;i<5;i++){int temp = rand();while(temp>28||temp<1){temp = rand();}num[i] = temp;printf("%d\\n",num[i]);}}代码2:\/\/随机出来的数,保证不重复!#include<stdio.h>int ...

用java随机抽取一个人~~急用
在编程中,使用Java语言生成随机数是一个常见的任务。这里以抽取1到19之间的一个随机整数为例,展示如何实现这一功能。首先,你需要引入Java的Math类,这个类提供了生成随机数的方法。可以使用Math.random()方法来生成一个0到1之间的随机浮点数。为了将这个随机数转换为1到19之间的整数,可以采用以下两...

取随机数字不重复
编辑框1.内容 = “1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33”编辑框2.内容 = “”取数 = 分割文本 (编辑框1.内容, “|”, )置随机数种子 ().计次循环首 (6, i) .计次循环首 (取数组成员数 (取数...

求助C语言 怎样从1-30抽取自选数目
从1到30中 取出不重复的随机数字。最多取30个 rand()%30+1; 取1-30,包括1和30。srand()保证每次运行都取新的系列。程序如下:include <stdio.h> include include <stdlib.h> void main(){ int i,j,k,n,flag =0;int d[30];Lab1:printf("Enter the number 1 to 30 \\n");fscan...

1到25的数字,如何通过C语言实现随机排列
这个可以通过比较来完成。然后可以一一对应输出,或者直接输出产生的随机数也可以。另外一种方法是允许有重复,但是必须给每个数字1~25和产生的25个随机数字进行一一对应编号,然后首先按照随机数对应的输出,如果遇到相同的随机数,就随机数先后顺序排下来对应输出。方法有很多,自己可以思考一下。

如何用c语言计算1到100之间的随机数?
方法一:1 i = 1 2 while i < 10:3 k = 1 4 while k <= i:5 print('%d*%d=%2d '% (i,k,i*k),end='') #end=‘’ 表示不换行(系统默认输出完毕换行)6 k += 1 7 print()8 i += 1 输出结果 9 1*1= 1 10 2*1= 2 2*2= 4...

c语言中怎样在固定的几位数中随机选取其中的一位
声明一个数组 。 然后数组里面写上你要的数字 。 最后用 rand()求余。 得到一个随机位置。 然后将其输出 就可以了的

Java编程语言里取随机数1,2,3的方法是什么?
提取random是在Math的方法里的直接给你个1-100以内的随机数代码好拉 Random r=new Random();int i1=r.nextInt();int i2=r.nextInt(100);\/\/返回0到100之间的随机数 double d=r.nextDouble();float f=r.nextFloat();byte[] c=new byte[10];;r.nextBytes(c);\/\/生成的随机数存放在 ...

Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里 ...
1、可以使用while函数,对随机进行循环 2、直接在随机数中去掉170这个值