30天学会C语言: Day 25-抽奖的原理

乱数

用於产生随机的数字,在 C 语言中乱数相关的函式定义在 stdlib.h

rand()

随机回传一个整数

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

int main(){
	printf("%d", rand());

	return 0;
}

重复执行几次会发现结果都相同,因为乱数实际上是透过一个复杂的演算法,将称为 种子 的数字计算成其他数字,因为没有另外设定,所以每次执行时种子都是0,所以乱数的结果都会相同

srand()

用於设定种子,通常使用 time.h 中的 time() 为引数

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

int main(){
	srand(time(NULL));
	printf("%d", rand());

	return 0;
}

如果取多次乱数,只需要在第一次取乱数前设定种子,每次执行的结果就会不同


回传数值的上限因系统而异而且极大,所以通常会利用除模限制数值的范围

因为一个数除模 n 只会有 n 种结果(0, 1, ..., n-1),所以下面例子让乱数的结果限制在0~9

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

int main(){
	srand(time(NULL));
	printf("%d", rand()%10);

	return 0;
}

将乱数结果限制在 1~10

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

int main(){
	srand(time(NULL));
	printf("%d", rand()%10+1);

	return 0;
}

<<:  Day28:【技术篇】ASP DOT NET CORE 的 MVC 基础入门

>>:  信件

Day12 HTML二

今天的影片内容为介绍HTML语法中,文件输出的应用以及建构完整的网页 以下为影片中有使用到的程序码 ...

[DAY 14]cog架构用法(1/2)

目前discord bot已经有初步的功能了 之後写的功能一定会越来越多 决定使用cog的架构来写 ...

Android Studio初学笔记-Day8-元件客制化

元件客制化(LinerLayout和Button) 前几天讲了EditText和Button,不过这...

【Day 12】 实作 - 透过 AWS 服务 - Athena 建立以及查询资料表

大家午安~ 在第 8、9 天我们完成 Data Collection 以及 Google Analy...

Angular#5 专案:路由 登入系统>>首页

Angular [目标] 进入系统>>登入>>首页 1. VSCode 撰写...