基本介紹
功 能: 隨機數發生器
用 法: int random(int num);
程式例:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
/* prints a random number in the range 0 to 99 */
int main(void)
{
randomize();
printf("Random number in the 0-99 range: %d\n", random (100));
return 0;
}
注意:
在使用Random之前需要使用Randomize語句進行隨機數種子的初始化。
例如:
var
a,i,,j:integer;
begin
{RANDOMIZE;}
for j:=1 to 2 do
begin
for i:=1 to 10 do
begin
a:=random(1000);
writeln(a);
end;
writeln;
end;
end.
這兩組數據輸出的是一樣的結果,如果在程式前加上RANDOMIZE(即把大括弧去掉)再運行程式,輸出數據就不一樣了.
RANDOM產生的是偽隨機數或者說是用一種複雜的方法計算得到的序列值,因此每次運算時需要一個不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機數了。這也正是RANDOMIZE隨機初始化的作用。 VB里用 NEW RANDOM()來表示初始化。
對調用者的說明
在Random類中的隨機數生成器的實現不能保證.NET Framework 的主版本之間保持相同。。結果是,應用程式代碼不應假定相同的種子將產生不同版本的 .NET 框架中的相同偽隨機序列。
對繼承者的說明
在 .NET Framework 1.0 和 1.1 版中,派生自Random的類的最小實現需要重寫Sample方法,以定義用於生成隨機數的新算法或修改算法。然後,該派生類便可依賴Random.Next()、Random.Next(Int32)、Random.Next(Int32, Int32)、NextBytes和NextDouble方法的基類實現來調用Sample方法的派生類實現。
在 .NET Framework 2.0 及更高版本中,Random.Next()、Random.Next(Int32, Int32)和NextBytes方法的行為發生了更改,因此這些方法不必再調用Sample方法的派生類實現。因此,派生自Random並且面向 .NET Framework 2.0 及更高版本的類還應重寫這三種方法。
基本函式
Random函式
Math.random();
可以產生出0-1之間的任意小數,例如0.0105901374530933 或
0.872525005541986,有幾個其他的函式可以用來改變產生的數字,從而可以更好的在你的影片中使用:
Math.round();
Math.ceil();
Math.floor();
這幾個函式都是用來取得整數的,Math.round();是採用四捨五入方式取得最接近的整數。Math.ceil();是向上取得一個最接近的整數。Math.floor(); 和Math.ceil();相反,Math.floor();向下取得一個最接近的整數。
結合這些函式,你就可以這樣寫:
Math.round(Math.random());
Math.Random()實際是在內部調用java.util.Random()的,Math.random()有一個致命的弱點,它和系統時間有關,也就是說相隔時間很短的兩個random比如:
double a = Math.random();
double b = Math.random();
即有可能會得到兩個一模一樣的double。
這個表達式可以生成一個0.0和1.0之間的一個數,然後四捨五入取得一個整數。這樣所生成的數字就是0或1。這個表達式可以用在各有50%的可能的情況下,例如拋硬幣,或者true/false指令。
*10 是將你所生成的小數乘以10,然後四捨五入取得一個整數:
Math.round(Math.random()*10);
要創建一個1到10之間的隨機數,可以這樣寫:
Math.ceil(Math.random()*10);
應為是Math.ceil向上取值,所以不會產生0。要創建一個5到20的隨機數可以這樣寫
Math.round(Math.random()*15)+5;
也就是說,如果要創建一個從x到y的隨機數,就可以這樣寫
Math.round(Math.random()*(y-x))+x;
x和y可以是任何的數值,即使是負數也一樣。
要製作上面的那個例子,首先要創建一個按鈕符號,拖動到主場景中,然後創建一個新的動態文本框,賦予動態文本框的變數名為“display”。創建的工作到此結束,下面來添加腳本.
選中按鈕,打開actions視窗,輸入下面的代碼,你可以在下拉選單中選擇,也可以直接將下面的代碼拷貝進去:
on (release) {
display = Math.round (Math.random ()*200)-100;
}
完成了,下面測試一下你的影片,你會注意到代碼中的值遵循了那個公式。如果x =
-100, y =100,那么y-x=200, +x = -100.
隨機數在flash中還可以有多種不同的套用。要讓一個movieclip在隨機的螢幕上不同的位置上出現,顯示的位置在0到200之間,可以這樣寫,注意movieclip的實例名為“bob”.
bob._x = Math.round(Math.random()*200);
bob._y = Math.round(Math.random()*200);
或者隨機的控制movieclip的大小(從0到100之間):
bob._width = Math.round(Math.random()*100);
bob._height = Math.round(Math.random()*100);
也可以隨機的載入一個movieclip,如果你的movieclip的命名是"bob1", "bob2"
一直到"bob5",我們可以這樣寫。
i = Math.ceil(Math.random()*5);
attachMovie("bob"+i, "fred"+i, 1);
運行這個代碼以後。就會隨機的載入一個movieclip,例如"bob3",放在level 1
,賦予實例名為"fred3"。
VB:
中 用rnd 函式返回一個隨即函式
Function Rnd([Number]) As Single
VBA.Math 的成員
返回一個隨機數
返回的範圍在[1,0]內
隨機數語句
RANDOMIZE;{隨機數激發器}
RANDOM(N);{表示產生[0,N)之間的隨機整數,可以直接使用RANDOM語句表示隨機產生一個[0,1)的數}
例:如果要隨機取一個3位整數只需使用下列語句:
RANDOMIZE;
N:=TRUNC(RANDOM*900)+100;
既可。
C#語言中的語句
Random類的主要方法是Next方法,它產生一個介於兩個整數之間的隨機數。語法格式為:
public virtual int Next(int min Value,int max Value);
NextDouble 方法:產生大於或等於0.0 而小於1.0 的雙精度浮點數字。語法格式為:
public virtual double NextDouble();
例:求兩個隨機數的和。
Random p1 = new Random(10);
Random p2 = new Random();
int result;
result = p1.Next(10, 99) + p2.Next(0,9);
Console.WriteLine(result );
javascript實例
在本例中,我們將取得介於 0 到 1 之間的一個隨機數:
DotA命令
隨機英雄命令欄位,在遊戲開始階段回車敲入 -random,隨機選擇英雄。