2014-10-11 107 views
-2

我有一個函數foo(Random r),它的輸入中有一個Random。將'int'投射到'Random'

有時隨機由用戶給出,然後不是隨機類型,我不知道如何將intbyte[]等其他類型的值分配給Random。 我的意思是有時候我需要這個函數來調用foo(int r)。 順便說一下,我只是從一個dll調用這個函數,並沒有源代碼。

我怎樣才能通過intRandom

+7

我不認爲隨機意味着你的想法。 – 2014-10-11 13:45:47

+0

根據圖書館手冊創建一個新的Random類並根據其初始化。 – Santhos 2014-10-11 13:46:34

+0

如果你想傳遞一個'int'或一個'byte []'或者其他類型的類型,你需要爲你的方法創建接受每種類型的重載。 – 2014-10-11 13:48:09

回答

1

這是怎麼回事?
這隻返回您設置的整數。

class NotRandom : Random 
{ 
    public int Integer{get;set;} 

    public NotRandom(int integer) 
    { 
     Integer = integer; 
    } 

    public override int Next() 
    { 
     return Integer; 
    } 

    public override int Next(int maxValue) 
    { 
     return Integer; 
    } 

    public override void NextBytes(byte[] buffer) 
    { 
     for (int i = 0; i < buffer.Length; i++) 
      buffer[i] = (byte)Integer; 
    } 

    protected override double Sample() 
    { 
     return (double)Integer; 
    } 

    public override int Next(int minValue, int maxValue) 
    { 
     return Integer; 
    } 

    public override double NextDouble() 
    { 
     return (double)Integer; 
    } 
} 

在採樣功能

private int GetRandomNumber(Random rand) 
{ 
    return rand.Next(); 
} 

那麼,如果你調用如下

int randNum = GetRandomNumber(new NotRandom(3)); 

randNum總是有你傳遞NotRandom的構造函數參數3。

+0

有趣:)謝謝你 – user3001145 2014-10-21 11:49:29