1. 日常生活中有什麼方便的產生隨機數的方法
擲 骰子。例如 用 5 個 骰子,就可隨機產生 1-30 之間的數。
拋 一個 硬幣。可隨機產生 0 和 1 兩個數。
從撲克牌里 抽一張牌,可隨機產生 1-13 中的一個數。
2. 計算機真隨機數都應用在什麼地方
首先,「真隨機」也有不同的含義,若想要「真正的真隨機」目測只能靠量子力學了。一般的所謂真隨機不是指這個,而是指統計意義上的隨機,也就是具備不確定性,可以被安全的用於金融等領域,下面說的也是這種。
答案是,計算機系統可以產生統計意義上的真隨機數。
大部分程序和語言中的隨機數(比如 C 中的,MATLAB 中的),確實都只是偽隨機。是由可確定的函數(常用線性同餘),通過一個種子(常用時鍾),產生的偽隨機數。這意味著:如果知道了種子,或者已經產生的隨機數,都可能獲得接下來隨機數序列的信息(可預測性)。
直觀來想,計算機是一種可確定,可預測的的設備,想通過一行一行的確定的代碼自身產生真隨機,顯然不可能。但是,我們或許可以迂迴一下……
實現方法簡單說就是軟硬結合,或者說,引入系統外的變數(把軟體,代碼,演算法想像成一個封閉的系統)。
一個典型的例子就是 UNIX 內核中的隨機數發生器(/dev/random),它在理論上能產生真隨機。即這個隨機數的生成,獨立於生成函數,這時我們說這個產生器是非確定的。
具體來講,UNIX 維護了一個熵池,不斷收集非確定性的設備事件,即機器運行環境中產生的硬體噪音來作為種子。
比如說:時鍾,IO 請求的響應時間,特定硬體中斷的時間間隔,鍵盤敲擊速度,滑鼠位置變化,甚至周圍的電磁波等等……直觀地說,你每按一次鍵盤,動一下滑鼠,鄰居家 wifi 信號強度變化,磁碟寫入速度,等等信號,都可能被用來生成隨機數。
更具體的,內核提供了向熵池填充數據的介面:
比如滑鼠的就是
void add_mouse_randomness(__u32 mouse_data)
內核子系統和驅動調用這個函數,把滑鼠的位置和中斷間隔時間作為噪音源填充進熵池。
所以,結論是,程序和演算法本身不能產生真隨機,但是計算機系統作為整體可以迂迴產生統計意義上的真隨機。
3. 在生活中概率在哪些地方可以用到
生活中,概率在許多地方中都可能用到,例如,打牌時,抽簽時,選股時,甚或打車,逛街時都可能面臨著概率的問題。
4. 日常生活中有什麼方便的產生隨機數的方法
用隨機數生成器就可以了啊!在線隨機數生成器,可以隨機生成你設定的隨機數,可以是唯一的或者重復的,根據你指定的最小數和最大數生成相應的隨機數, 在你需要抽簽、隨機選擇的時候非常的便利。另外,你還可以把它當成別樣的色子來用。
5. 結合生活中的實例,描述求解隨機數的演算法流程圖
生活中的實例:一個老太太買白菜,她給挑出的10棵白菜排一下序,然後她拿出了隨身攜帶的筆記本電腦,輸入 。
#include "stdio.h"
#define N 10
main()
{
int a[N];
int i,j,p,temp;
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
p=i; for(j=i+1;jif(a[j]temp=a[i];a[i]=a[p];a[p]=temp;
}
printf(" ");
for(i=0;iprintf("%d ",a[i]);
}
然後得到了白菜的重量排序。
傳統的流程圖用流程線指出各框的執行順序,對流程線的使用沒有嚴格限制。因此,使用者可以毫不受限制地使流程隨意地轉來轉去,使流程圖變得毫無規律,閱讀者要花很大精力去追蹤流程,使人難以理解演算法的邏輯。
如果我們寫出的演算法能限制流程的無規律任意轉向,而像一本書那樣,由各章各節順序組成,那樣,閱讀起來就很方便,不會有任何困難,只需從頭到尾順序地看下去即可。
為了提高演算法的質量,使演算法的設計和閱讀方便,必須限制箭頭的濫用,即不允許無規律地使流程亂轉向,只能按順序地進行下去。但是,演算法上難免會包含一些分支和循環,而不可能全部由一個一個框順序組成。
如上例不是由各框順序進行的,包含一些流程的向前或向後的非順序轉移。為了解決這個問題,人們設想,如果規定出幾種基本結構,然後由這些基本結構按一定規律組成一個演算法結構,整個演算法的結構是由上而下地將各個基本結構順序排列起來的。
1966年,Bohra和Jacoplni提出了以下三種基本結構,用這三種基本結構作為表示一個良好演算法的基本單元。