2010-03-30 37 views
0

我想用随机数做一个频率表。 因此,我已经创建了生成0 9999之间和FreqTable随机值(#C)

 public void FillArrayRandom(int[] T) 
    { 
     Random Rndint = new Random(); 

     for (int i=0; i < T.Length; i++) 
     { 
      T[i] = Rndint.Next(0, 9999); 
     } 
    }/*FillArrayRandom*/ 

11个随机值我想要的结果是一样的东西这一个阵列:(巴高度可达21)因此,这将是一个常数。

    * 
     *  * 
    *  *  *   (the highest value will have the largest row/bar) 
    *  * * * 
    0  1 2 3 .....(index value's) 
931 6669 10 8899 .... (up to 11 random values) 

我的问题是我该如何计算这11个随机值之间的频率? 酒吧应该有一个相对的关系,相互依赖于频率。 我只想在我的程序中使用1个单个数组(对于生成的值)。

F =(F * 21?)/ ...?真的不知道如何获得正确的结果。

如果频率是> = 21 *写入如果频率是> = 20的写*如果一个频率是> = 19的写*,依此类推,直到我达到1.(并显示全表

Basicly我想每行打印的表格符合consolewrite(线)

等等

问候

+0

你的问题很混乱。频率表列出了添加号码的次数。如果您有两次931,表格会在931位显示2. 您的频率是什么意思? 如果你只有11个值,怎么去21? – Carra 2010-03-30 13:45:15

+0

你的代码也有点混乱。这听起来像你需要两个数组,一个用于11个随机值,另一个用于从这11个rand值中填充?首先填充你的rand源数组,然后你的最终数组? – 2010-03-30 13:50:16

回答

0

要计算的频率,你可以使用字典定义是这样的:。

freqDict Dictionary<int, int> = new Dictionary<int, int>(); 

其中第一个整数(K)是与您的随机值或其值在索引值中对应的键,无论哪种方式它必须是唯一的并且能够引用特定值。第二个整数是值(V),它是每个键的计数。

接下来,遍历随机生成的值的数组,如果它没有在字典中表示,请使用新的键添加它,并将值设置为1.如果字典已经包含键,则只需将该值递增1。这对于你的rand数组中的每个值,你将得到一个带有频率分布的字典。