網站首頁 編程語言 正文
一.產生隨機數
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int n = 0;
srand((unsigned int)time(NULL));
n = rand();
printf("產生一個隨機數 %d", n);
return 0;
}
運行結果
二.逐行解析
1.rand()函數
在我的MSDN里,rand()函數的返回值是int,頭文件是stdlib.h
這句話的意思是:rand函數返回一個偽隨機數,如果超出范圍,則返回錯誤。rand的范圍是0 到RAND_MAX(0到32767)
這里值得注意的是什么是偽隨機,下面舉個例子
我們不難看出雖然打印隨機數,但每次打印的隨機數都一樣,所以怎么辦呢?我們就需要一個隨機數種子strand啦
2.srand()函數
srand的返回值是void,里面傳參需要一個unsigned int類型的seed(種子),我們可以看出其實這就是一個設置種子的函數,那么我們設置什么種子呢?
因為我們想要的隨機數時時刻刻都要改變,那么毫無疑問就時間是在無時無刻都在改變的,所以我們設置一個時間種子
3.time()函數
time函數的返回值類型是(time_t),但我們要按照srand函數的要求將其強制轉化為(unsigned int)。它的頭文件是time.h。它所需要的參數是一個指針,但我們并不需要給它傳參,所以我們用(NULL)
time函數返回的值是每時每秒,所以它的值是變化的
最終我們就寫出了一個時間種子srand((unsigned int)time(NULL))
三.生成有范圍的隨機數
有時候,隨機數生成的范圍太大了,我們該怎么縮小它的范圍呢?
由此不難看出其實我們需要哪個范圍,只需要rand()%n,就可以了
原理也很簡單,一個隨機數%100那么它的值就會是0-99
總結
原文鏈接:https://blog.csdn.net/m0_73790767/article/details/127762283
相關推薦
- 2022-11-25 詳解Python中的數據精度問題_python
- 2023-01-26 Python編程之順序執行與程序的主入口詳解_python
- 2024-07-13 解決mybatis中因數據庫列名和實體類屬性名不同而獲取不到數據的問題
- 2022-12-28 C++關鍵字const使用方法詳解_C 語言
- 2022-04-21 Tomcat中catalina.out?和?catalina.log的區別和用途詳解_Tomcat
- 2022-10-08 jQuery動態添加元素后元素注冊事件失效解決_jquery
- 2023-11-20 【ROS】用roslibpy庫在windows上用python 連接Ubuntu ROS
- 2022-07-16 Date 轉為 LocalDate
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支