搜档网
当前位置:搜档网 › 在循环中生成随机数

在循环中生成随机数

在循环中生成随机数


//清空图片背景色
g.Clear(Color.White);

n次相邻循环生成的随机数都一样啊

把Random r1 = new Random();放到循环外就可以了

————————————————
private Random r1 = new Random(unchecked((int)DateTime.Now.Ticks));
private Random r2 = new Random(~unchecked((int)DateTime.Now.Ticks));
r1.Next();
r2.Next();
————————————————————
Random rnd1 = new Random();
Random rnd2 = new Random(https://www.sodocs.net/doc/3f4659572.html,lisecond + 12345);
rnd2.Next(rnd1.Next());

————————————————————————

如果在同一秒内生成N个不同的随机数。
// 随机生成数字
int randomX = new Random().Next(1, 10);

int randomS1 = new Random().Next(1, 5);

int randomM1 = new Random().Next(1, 30);

int randomW1 = new Random().Next(1, 20);

int randomD = new Random().Next(1, 12);

int randomW3 = new Random().Next(1, 11);

int randomS2 = new Random().Next(1, 80);

int randomW2 = new Random().Next(1, 65);

int randomZ = new Random().Next(1, 45);

int randomS3 = new Random().Next(1, 20);

int randomM2 = new Random().Next(1, 9);

————————————————————————
bool[] Bquestion;//标识
string[] questions; //存放1到100的数组
string[] question; //存放随机后的数字
private void randomInsert()
{
int C = 个数;
questions = new string[C];
Bquestion = new bool[C];
for (int i = 0; i < 100; i++)
{
questions[i] = i+1;
}
Random r = new Random();
for (int i = 0; i < C; )
{
int ran = r.Next(C);
//判断Bquestion[ran]的值是否为false,若不是则表示此次产生的随机数ran对应的questionid已交给过question数组~
if (Bquestion[ran] == false)
{
question[i] = questions[ran];//将随即产生的下标ran所对应的questionid交给question数组;
Bquestion[ran] = true;//将Bool型数组Bquestion所对应的ran下标的值设为true
i++;
}
}
排序就可以用冒泡对question数组进行排序
————————————————————————————

MSDN中有这样一个示例代码。Random的构造函数的参数(伪随机序列的种子)用时间来表示,>> ctr来控制随机数的范围
int randomInstancesToCreate = 4;
Random[] randomEngines = new Random[randomInstancesToCreate];
for (int ctr = 0; ctr < randomInstancesToCreate; ctr++)
{
randomEngines[ctr] = new Random(unchecked((int) (DateTime.Now.Ticks >> ctr)));
}

——————————————————————
Random rd = new Random(https://www.sodocs.net/doc/3f4659572.html,lisecond);
int randomX = rd.Next(1, 10);
int randomS1 = rd.Next(1, 5);
int randomM1 = rd.Next(1, 30);
int randomW1 = rd.Next(1, 20);
int randomD = rd.Next(1, 12);



——————————————————————————

Random rnd = new Random();
Byte[] b = new Byte[10];
rnd.NextBytes(b);


——————————————————————--

// 使用Guid, 可以保证在瞬间产生出不同的随机数
// 大概写法是这样..

Random rnd = new Random(Guid.NewGuid.GetHashCode());

————————————————————————————

Random rnd = new Random(https://www.sodocs.net/doc/3f4659572.html,lisecond);
int[] rands = Enumerable.Range(最小, 最大).OrderBy(i => rnd.Next()).Take(拾取个数).ToArray();

——————————————————————————————

不要每一次都“new Random()”,这多么浪费心情啊。应该在class层次声明

C#:

codestatic public Random Rnd=new Random();

然后程序中直接使用Rnd这个变量来计算Next。

————————————————————————————————
8位长的随机字符


static string randString()
{
string str = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+";//75个字符
Random r = new Random();
string result = string.Empty;

//生成一个8位长的随机字符,具体长度可以自己更改
while (result.Length<8)
{
int m = r.Next(0, 75);//这里下界是0,随机数可以取到,上界应该是75,因为随机数取不到上界,也就是最大74
string s = str.Substring(m, 1);
if (result.Contains(s)==false)
{ result += s; }

}

return result;
}

static void Main(string[] args)
{
Console.WriteLine(randString());
Console.Read();
}

————————————————————————————————————
for (int i = 0; i < 100; i++)
{
Console.WriteLine(string.Format("{0}{1}{2}", DateTime.Now.ToString("yyMMddHHmmss"),
DateTime.Now.ToString("FFFF").PadRight(4, '0'), rand.Next(9999).ToString().PadRight(4, '0')));
}

private Random rand = new Random();

——————————————————————————————

1:用aspnet自带的随机类生成:
System.Random r = new Random() ;
r.Next( 0 , 100000 ) ;//生成0到100000之间的随机数
r.Next( 1000000 ) ;//生成小于1000000,大于等于0的随机数
2:自己写随机函数
参考思路:
4位数first*4位数second=8位数result
取result的前4位或后4位 为一随机数next
下个随机数为first=next
重复 取得另一随机数(设置种

子就不会重复了)

——————————————————————————
原理就可以抽取扑克牌一样,先得到一副完整的扑克,然后随机抽取一张,然后再在余下的扑克中抽取下一张
参考如下代码
C#:

public static int[] RandomNumbers(int ACount, int AMinValue, int AMaxValue)
{
if (ACount <= 0) return null;
if (AMaxValue < AMinValue) // 确保vMinValue小于vMaxValue
AMinValue = AMaxValue | (AMaxValue = AMinValue) & 0;
if (ACount > AMaxValue - AMinValue + 1) return null; // 取的个数多余范围就算了
List vValues = new List();
for (int i = AMinValue; i <= AMaxValue; i++)
vValues.Add(i); // 得到一个完整顺序排列的数组
int[] Result = new int[ACount];
Random vRandom = new Random();
for (int i = 0; i < ACount; i++)
{
int j = vRandom.Next(vValues.Count);
Result[i] = vValues[j];
vValues.RemoveAt(j); // 抽取后删除
}
return Result;
}

private void button1_Click(object sender, EventArgs e)
{
foreach (int i in RandomNumbers(5, 1, 10))
{
Console.WriteLine(i);
}
}

——————————————————————————

using System.Collections.Generic;
public class TestList
{
public static void Main()
{
List aa = new List();
for (int i = 0; i <10; i++)
{
aa.Add(i);// 0,1, 2, 3, 4, 5, 6, 7, 8, 9;
}
List bb = new List();
Test(aa, bb);
foreach(int i in bb)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
public static void Test(List aa, List bb)
{
if (aa.Count == 0) return;
Random ra = new Random();
int a = ra.Next(aa.Count);
bb.Add(aa[a]);
for (int i = 0; i < aa.Count; i++)
{
if (aa[i] == aa[a])
{
aa.RemoveAt(i);
}
}
Test(aa, bb);
}
};


aa去掉随机数。。bb加 入获取的随机数

————————————————————————————

Random rnd = new Random();
public string getRandomString(int length)
{
char[] character = {'0','1','2','3','4','5','6','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
string s = string.Empty;
//Random rnd = new Random();
for (int i = 0; i < length; i++)
{
s += character[rnd.Next(character.Length)].ToString();
}
return s;
}

————————————————————

产生100个不重复的数

int[] arr = new int[100];
Random r = new Random(Environment.TickCount);
int index = 0;
while (Array.IndexOf(arr, 0) != -1)
{
int i = r.Next(1, 101);
if (Array.IndexOf(arr, i) < 0)
arr[index++] = i;
}
foreach (int i in arr)
Response.Write(i.ToString() + "
");

————————————————————————————

相关主题