C语言笔记

C语言随机数生成怎么做?学习笔记

/*在C语言中生成随机数,你可以使用标准库中的
`rand()` 函数。这个函数会返回一个介于0和
RAND_MAX之间的随机整数。RAND_MAX是 `stdlib.h` 
头文件中定义的一个常量,通常等于32767。

1、使用rand() 函数生成随机数:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int randomNumber;
    // 初始化随机数生成器
    srand(time(NULL));
    // 生成一个随机数
    randomNumber = rand();
    // 打印随机数
    printf("随机数: %d\n", randomNumber);
    return 0;
}

//初始化随机数生成器是为了确保每次程序运行时都能生成不同的随机数序列。如果没有正确初始化 随机数生成器,你可能会得到可预测的、重复的随机数序列, 这会使得程序的随机性失效。
 

在这个例子中,`srand(time(NULL))` 调用初始化了随机
数生成器。`time(NULL)` 函数返回当前的时间,`NULL` 
参数表示我们不需要把时间存储在任何地方。每次调用 
srand()` 时使用不同的时间值,可以确保每次程序运行
时都能生成不同的随机数序列。

2、生成一个特定范围内的随机数

你可以使用
`rand()` 函数结合模运算 `%` 来实现。例如,如果你想
生成一个0到9之间的随机数,你可以这样做:

int randomNumber = rand() % 10;

如果你想生成一个1到10之间的随机数,你可以这样做:

int randomNumber = 1 + (rand() % 10);


 

记住,每次运行程序时,`rand()` 函数都会生成相同的随
机数序列
,除非你重新初始化随机数生成器。因此,如果你需
要每次运行程序时都有不同的随机数,确保在每次调用 `rand()` 
之前都调用 `srand()`。*/

//FirstNo.1:
/*#include<stdio.h>
#include<stdlib.h>
int main() {
    int randomNumber;
    srand(time(NULL));//初始化随机数生成器
    randomNumber = rand();
    printf("随机数:%d\n", randomNumber);
    return 0;
}*/
//time 函数是 C 标准库中的一个函数,属于 C99 标准。
// 它返回自纪元以来的秒数,纪元通常是指 1970 年 1 月
//  1 日 00:00:00 UTC。time 函数通常用于获取时间戳,
// 但在生成随机数时,我们通常只关心它返回的整数值,这
// 个值可以用来初始化随机数生成器。

//No.2
/*#include<stdio.h>
#include<stdlib.h>
int main() {
    while(1){
    srand(time(NULL));
    int suijishu;
    suijishu =1+ rand() % 100;
    printf("随机数是:%d\n", suijishu);
    gets();
    srand(time(NULL));
    }
    return 0;
}*/

/*经观察发现,出现的问题是:
 他会自小到大生成随机数,
 而且程序按键速度越快
生成的数字越相近甚至重复*/

//No.3
#include<stdio.h>
#include<stdlib.h>
int main() {
    int suijishu;
    srand(time(NULL));
    for (int i = 0; i < 100; i++) {
        suijishu = 1 + (rand() % 100);
        printf("%4.d", suijishu);
    }
    return 0;
}
/*经过查询最终发现这样就不从小到大且不重复了*/

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值