这是我们java老师布置的题目:
随机产生100个1-100之间的随机值,统计都产生了哪些数字并且重复了多少次
[code=Jav]
import java.util.*;
public class Demo{
public static void main(String[]args){
Random rd=new Random();
HashMap map=new HashMap();
for(int i=0;i<100;i++){
int num=rd.nextInt(100)+1;
if(map.containsKey(num)){
map.put(num,((Integer)map.get(num))+1);
}else{
map.put(num,1);
}
}
Set set=map.entrySet();
Iterator it_set=set.iterator();
while(it_set.hasNext()){
Map.Entry entry=(Map.Entry)it_set.next();
System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
}
}
}
[/code]
这个题目是用java中的hashmap集合做的:
hashmap是map接口的实现类,它跟C#中的dectionary差不多:键要求唯一,值可以重复,判断指定键是否存在方法都一样,不同的是:在java中插入了重复的键,它不会报错,而在C#中运行的时候会报错,还有就是在java中放值进去是用put()而不是
add()
我就想在C#中怎么用dectionary做呢?有高手会么?
用其他方式我会做===》下面是我做的:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Random ran = new Random();
            List<int> nums = new List<int>();
            for (int i = 0; i < 100; i++)
            {
                nums.Add(ran.Next(100) + 1);
            }            for (int i = 0; i < nums.Count; i++)
            {
                int count = 0;
                for (int j = 0; j < nums.Count; j++)
                {
                    if (nums[i] == nums[j])
                    {
                        count++;
                    }
                }
                Console.WriteLine(nums[i]+"重复了"+count+"次");
            }
        }
    }
}

解决方案 »

  1.   

    List <int> nums = new List <int>(); 
                for (int i = 0; i < 100; i++) 
                { 
                    nums.Add(Enumerable.Range(1, 100).OrderBy(Guid.NewGuid())); 
                } 
    var q = from x in nums 
      group x by x into Y
      where Y.Count()>1
      select {Y.Key,Y.Count()};
      

  2.   


                //用来记录产生的随机数和它出现的次数
                Dictionary<int, int> result_Dic = new Dictionary<int, int>();
                Random rdom = new Random();            for (int i = 0; i < 100; i++)
                {
                    int temp = rdom.Next(0, 100);
                    if (result_Dic.ContainsKey(temp))
                        result_Dic[temp]++;
                    else
                        result_Dic.Add(temp, 1);
                }result_Dic的key就是出现过的数字,它的value就是出现的次数