random[隨機數發生器]

random[隨機數發生器]
random[隨機數發生器]
更多義項 ▼ 收起列表 ▲

random即隨機數發生器,使用之前需要使用Randomize語句進行隨機數種子的初始化。RANDOM產生的是偽隨機數或者說是用一種複雜的方法計算得到的序列值,因此每次運算時需要一個不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機數了。這也正是RANDOMIZE隨機初始化的作用。 VB里用 NEW RANDOM()來表示初始化。

基本介紹

隨機數種子未初始化時 隨機數種子未初始化時

功 能: 隨機數發生器

用 法: 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,隨機選擇英雄。

相關詞條

相關搜尋

熱門詞條

聯絡我們