c#,新手问题,急需答案!

zhangx172939666 2009-03-08 01:37:56
随机选出的数,每个都不相同,程序应该怎么写?
...全文
86 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tengfei5200 2009-03-08
  • 打赏
  • 举报
回复
Random rl = new Random();
int ret=rl.Next(0, 100);
cppfaq 2009-03-08
  • 打赏
  • 举报
回复
换个思路,直接GUID啥....
chsht2000 2009-03-08
  • 打赏
  • 举报
回复
Random rl = new Random();
int ret=rl.Next(0, 100);


这个最简单,经典的取随机数。
浪子-无悔 2009-03-08
  • 打赏
  • 举报
回复
楼上的都是正解。。
liusichen_0 2009-03-08
  • 打赏
  • 举报
回复
给出一个思路吧,把已经生成的数据放在一个数组或者表中,每生成一个新的数据就去检查是不是重复,如果重复就丢弃取下一个随机数,这样可以保证绝对不会有重复,希望有帮助
止戈而立 2009-03-08
  • 打赏
  • 举报
回复
博客里写了一个我经常使用的方法:
http://blog.csdn.net/min_jie/archive/2009/03/08/3968874.aspx
PandaIT 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
Random ra = new Random();
List <int> lst=new List <int>;
int num = 0;
for(int i=0;i <0;i++)
{
num=ra.Next(1,100);
if(!lst.Contains(num))
lst.Add(num);
}
[/Quote]

此方法不错!
天乐 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
Random ra = new Random();
List <int> lst=new List <int>;
int num = 0;
for(int i=0;i <0;i++)
{
num=ra.Next(1,100);
if(!lst.Contains(num))
lst.Add(num);
}
[/Quote]


推荐这个,把Next里面的参数设置大一点,重复的概率就很小了。

比如你要生成10000个随机数,就把那个100改成9999999,重复的概率低,则重复生成次数的就少一些
wuyq11 2009-03-08
  • 打赏
  • 举报
回复
Random ra = new Random();
List<int> lst=new List<int>;
int num = 0;
for(int i=0;i<0;i++)
{
num=ra.Next(1,100);
if(!lst.Contains(num))
lst.Add(num);
}
wangkingwellboy 2009-03-08
  • 打赏
  • 举报
回复
Random rl = new Random();
int ret=rl.Next(0, 100);
AdaEniac 2009-03-08
  • 打赏
  • 举报
回复
SQL生成随机编码,两种方法
SQL 和 C#的
要接分了...


--取得随机数的视图
CREATE VIEW v_RAND
AS
SELECT re=STUFF(RAND(),1,2,'')
GO
--生成随机编号的函数
CREATE FUNCTION f_RANDBH(@BHLen int)
RETURNS varchar(50)
AS
BEGIN
DECLARE @r varchar(50)
IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
SET @BHLen=10
SELECT @r=CHAR(
CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
+(SUBSTRING(re,1,1)
+SUBSTRING(re,2,1)
+SUBSTRING(re,3,1))%26)
+CHAR(
CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
+(SUBSTRING(re,4,1)
+SUBSTRING(re,5,1)
+SUBSTRING(re,6,1))%26)
FROM v_RAND
WHILE LEN(@r)<@BHLen
SELECT @r=@r+CHAR(
CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
+(SUBSTRING(re,1,1)
+SUBSTRING(re,2,1)
+SUBSTRING(re,3,1))%26)
+CHAR(
CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
+(SUBSTRING(re,4,1)
+SUBSTRING(re,5,1)
+SUBSTRING(re,6,1))%26)
FROM v_RAND
RETURN(LEFT(@r,@BHLen))
END
GO
--调用
SELECT dbo.f_RANDBH(6),dbo.f_RANDBH(8)
--结果: YZVBOj LASCrhSO



C# 生成随机编码

private void button1_Click(object sender, System.EventArgs e)
{
string strNo = "";
strNo = DateTime.Now.Year.ToString().Remove(1,1);
strNo += DateTime.Now.Month.ToString();
strNo += DateTime.Now.Day.ToString();
strNo += DateTime.Now.Hour.ToString();
strNo += DateTime.Now.Minute.ToString();
strNo += DateTime.Now.Second.ToString();
strNo += DateTime.Now.Millisecond.ToString();

int a = int.Parse(DateTime.Now.Minute.ToString());
int b = int.Parse(DateTime.Now.Second.ToString());
int c = int.Parse(DateTime.Now.Millisecond.ToString());

// params int[] list



MessageBox.Show(strNo + RndString(1,c).ToString());

}

public static string RndString( int strLength, params int[] Seed )
{
string strSep = ",";
char[] chrSep = strSep.ToCharArray();
//因1与l不容易分清楚,所以去除
string strChar = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,,P,Q,R,S,T,U,V,W,X,Y,Z";

string[] aryChar= strChar.Split( chrSep, strChar.Length );
string strRandom = string.Empty;
Random Rnd;
if( Seed != null && Seed.Length > 0 )
{
Rnd = new Random( Seed[0] );
}
else
{
Rnd = new Random();
}
//生成随机字符串
for( int i=0; i < strLength; i++ )
{
strRandom += aryChar[Rnd.Next( aryChar.Length )];
}
return strRandom;
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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