在循环中生成随机数
//清空图片背景色
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
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
for (int i = 0; i <10; i++)
{
aa.Add(i);// 0,1, 2, 3, 4, 5, 6, 7, 8, 9;
}
List
Test(aa, bb);
foreach(int i in bb)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
public static void Test(List
{
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() + "
");
————————————————————————————