vb.net随机不重复数字,求大神做个源码。

llmwlp 2018-09-24 09:39:27
vb.net,从1-20随机选择4个数为一组,共选5组,要求所有的数不能重复。
例如:1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16;17 18 19 20。
同时每组数字按大小排序,请大神指导。
...全文
504 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主应该只要求一个随机解
良朋 2018-10-15
  • 打赏
  • 举报
回复
5楼得出的结果小组内不重复,但楼上似乎要求所有的数不能重复,不知道是不是合乎题意。
秋天之落叶 2018-10-11
  • 打赏
  • 举报
回复
我的方法和3楼的思路一致,呵呵
秋天之落叶 2018-10-11
  • 打赏
  • 举报
回复
我用过类似的方法,主要是筛选单字为了考试录入使用:
选1-20个数字排列,然后循环20次,循环时随机选择20以内的随机数,按照循环的顺序调整随机数的位置,
var
sl: TStringList;
i, m, n: Integer;

sl := TStringList.Create;
for i :=1 to 20 do
begin
sl.Add( i.tostring);
end;
Randomize;
for i := 1 to sl.Count do
begin
m := Random(sl.Count);
n := Random(sl.Count);
sl.Exchange(m, n);
end;
循环完成后,20个数字已经全部随机调整了顺序,然后再分组、排序即可。
不过我是用delphi完成的,仅供参考吧。
zbdzjx 2018-09-25
  • 打赏
  • 举报
回复
建个数组,存1-20,随机排序,再4个一组,按大小排一下序。
X-i-n 2018-09-25
  • 打赏
  • 举报
回复
新建List{ 1, 2, …… , 20} 跑20次循环,在每个循环里:生成0 ~ Count-1范围的随机整数,按随机数取对应位置的元素,取完从List里删除 最终会得到一个新的乱序List,每五个元素扔到一个List里,然后再用Sort方法排序。
zj_zwl 2018-09-25
  • 打赏
  • 举报
回复
随机就不能保证不重复,想不重复就直接按顺序提取
threenewbee 2018-09-25
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
总共20,选5组,每组4个,那不就是必定所有牌都会被取到么? 那简单的按Guid排序后分页获取就行了……
var tmp = list.OrderBy(p=>Guid.NewGuid());
List<int[]> resultList = new List<int[]>();
for(var i=0;i<5;i++)
{
   resultList.Add(tmp.Skip(i*5).Take(5).ToArray());
}
这个办法就可以了。
  • 打赏
  • 举报
回复
tmp.Skip(i*5).Take(5).OrderBy(m=>m).ToArray()

少了排序部分
  • 打赏
  • 举报
回复
总共20,选5组,每组4个,那不就是必定所有牌都会被取到么?
那简单的按Guid排序后分页获取就行了……
var tmp = list.OrderBy(p=>Guid.NewGuid());
List<int[]> resultList = new List<int[]>();
for(var i=0;i<5;i++)
{
resultList.Add(tmp.Skip(i*5).Take(5).ToArray());
}

  • 打赏
  • 举报
回复
那个不叫随机数字,那个是固定数字进行“洗牌”。具体来说,随机选择某个下标的元素跟第一个元素对调位置,重复n次达到“洗牌”的效果。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧