首页 > 编程知识 正文

构造一个8位数字该数字的每一位都不重复对吗,用9个数字随意组成数字不重复的四位数

时间:2023-05-04 04:37:08 阅读:282859 作者:400

构造一个8位数字,该数字的每一位都不重复???

像这种题目最土鳖的做法就是Random一个随机数字判断是否与之前的数字重复,如果重复则重新随机,其实想了想这种方法实在效率不高真的。

但是针对这个题目可以有一个比较好理解的做法虽然效率也是个问题。

public static int Method1() { List<string> nums = new List<string>() { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };//用字符串好处理 Random rd = new Random(); string num = ""; for (int i = 0; i < 8; i++)//生成8位数字 { int index = rd.Next(0, nums.Count);//随机一个index,从nums数组中,0开头的暂时就不处理了无非多个判断 num += nums[index]; nums.Remove(nums[index]); } return int.Parse(num); }

还有就是利用Hashtable来产生数字,随机生成0到9的数字利用HS的快速性进行循环查找遍历,然后找出之前没有的进行组合。

public static int Method2() { Hashtable hashtable = new Hashtable(); Random random = new Random(); string num = ""; for (int i = 0; hashtable.Count < 8; i++)//随机产生8位数字 { int nValue = random.Next(10);//在0,9中随机一个数字 if (!hashtable.ContainsValue(nValue))//判断之前是否有数字,0开头的暂时就不处理了无非多个判断 { hashtable.Add(nValue, nValue); num += nValue.ToString(); } } return int.Parse(num); }

我看网上也有用DateTime.Now.Ticks大体看过感觉也是一般,不知道还有什么好的方法呢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。