2010-09-29 103 views
1

我有兩個數字:我可以根據兩個數字生成一個6位隨機數嗎?

  1. IMEI號碼:12345678912345
  2. 隨機引腳:654321種

我隨機引腳總是變化。基於這種組合(IMEI和PIN)有什麼辦法可以產生6位數的隨機數?

我想在C#中做到這一點。

+0

你想一個6位數的隨機數,或者你想要的IMEI突然啓示的固定版本+ PIN每次生成相同的數字(例如某種散列)? – Robaticus 2010-09-29 12:57:52

+0

是的,我也希望100基於這個IMEI +密碼的唯一編號 – Hasnain 2010-09-29 13:59:05

回答

1

怎麼樣(IMEI + Pin)%900000 + 100000?

+0

我喜歡mod 900000加100000.之前沒見過! – soniiic 2010-09-29 12:59:18

1

最直接的方式是種子隨機數發生器,這兩個數字的功能

Random r = new Random(IMEA+Pin); 
int v = r.Next()%900000 + 100000; 
在這個例子中

的功能僅僅是總和,但你可以找到更多的東西senseful肯定的..這只是給你這個想法。

+0

編譯錯誤...'System.Random.Random(int)'的最佳重載方法匹配在第1列有一些無效參數12 參數1:無法在第1列第23列從'long'轉換爲'int' – soniiic 2010-09-29 13:01:25

+0

隨機r =新隨機(IMEA + Pin); 隨機數dosnt接受double它需要int作爲參數...因爲IMEI + PIN是19位數 – Hasnain 2010-09-29 13:01:51

+1

只需將其modulo參數的最大邊界(int)(IMEA + Pin%int.Max) – Jack 2010-09-29 13:10:59

1

傑克的答案

int seed = unchecked((int)(imie+pin)); 
Random r = new Random(seed); 
int[] result = new int[100]; 
for (int i = 0; i < 100; i++) { 
    result[i] = r.Next() % 900000 + 100000; 
} 

編輯固定的答案,因爲每個你需要100個號碼