欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

WPF产生不重复的随机数,wpf重复随机数

来源: 开发者 投稿于  被查看 6450 次 评论:60

WPF产生不重复的随机数,wpf重复随机数


WPF产生不重复的随机数

在给定的区间范围(比如[50,99]),产生给定数量的随机数(不如10个),要求产生的随机数不重复
首先给定变量
min=50;
max=99+1;//习惯与程序规定的编码不同所致
n=10;
好了,上代码
1.xaml界面格式
<Grid>
        <TextBlock x:Name="tb_Screen" HorizontalAlignment="Left" Margin="59,24,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
        <Button x:Name="tb_Create" Content="Button" HorizontalAlignment="Left" Margin="144,259,0,0" VerticalAlignment="Top" Width="75" Click="tb_Create_Click"/>
        <TextBox x:Name="txt_min" HorizontalAlignment="Left" Height="23" Margin="80,92,0,0" TextWrapping="Wrap" Text="50" VerticalAlignment="Top" Width="70" RenderTransformOrigin="0.462,2.179"/>
        <TextBox x:Name="txt_max" HorizontalAlignment="Left" Height="23" Margin="257,92,0,0" TextWrapping="Wrap" Text="99" VerticalAlignment="Top" Width="82" RenderTransformOrigin="1.018,0.43"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,95,0,0" TextWrapping="Wrap" Text="min=" VerticalAlignment="Top"/>
        <TextBlock HorizontalAlignment="Left" Margin="186,95,0,0" TextWrapping="Wrap" Text="max=" VerticalAlignment="Top"/>
        <TextBox x:Name="txt_n" HorizontalAlignment="Left" Height="23" Margin="121,149,0,0" TextWrapping="Wrap" Text="10" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="31,152,0,0" TextWrapping="Wrap" Text="数量" VerticalAlignment="Top"/>
</Grid>

  详细说明:http://wp.662p.com/thread-8107-1-1.html


c# 产生不重复随机数的问题

主要是要利用数组下标
第一次:从0至23取随机数,例如:8,把idlength[8]中的值放到result[0],然后把idlength[24]中的值放到idlength[8]。
第二次,从0至22取随机数。。。。。

int[] idlength = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,21,22,23,24 };
int[] result=new int[10];
for (int i = 1; i <= 10; i++)
{
Random random = new Random(DateTime.Now.Millisecond);
int rang = 24 - i;//随机数下标的范围
int index= random.Next(0, rang);//随机获取一个0到rang的下标
result[i - 1] = idlength[index];//取值赋给result
idlength[index] = idlength[rang];
}
 

VB产生不重复的随机数

不写具体代码了,没意思,就说下算法吧。这种要求不重复随机数一般是采用随机洗牌算法。
例:在一个数组中依次放入1~10的数,然后通过循环随机打乱(方法很多,比如随机两个数组下标然后交换),一定次数循环后依次读取此数组中的数,得到的就是不重复随机的1~10之间的数了。

楼上两位的方法都效率太低,在几十个数的小规模下还可以,数多了就不行了。
 

相关频道:

用户评论