在C#中随机化通用列表顺序的最佳方法是什么?我在一个列表中有一组有限的75个数字,我想为其分配一个随机顺序,以便为抽奖类型的应用程序绘制它们.
我有以下功能:
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)
我怎么称呼它:
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)
如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.
为什么会这样?
战舰!
早在2003年(当时我17岁),我就参加了战舰AI编码比赛.即使我输掉了那场比赛,我也玩得很开心并从中学到了很多东西.
现在,我想在这场比赛中复活,寻找最好的战舰AI.
获奖者将获得+450声望!比赛将于2009年11月17日开始.不接受17日零时以外的参赛作品或编辑.(中央标准时间)提前提交您的参赛作品,这样您就不会错过机会!
为了保持这个目标,请遵循竞争精神.
游戏规则:
比赛规则:
评分:
祝好运!玩得开心!
编辑1:
感谢Freed,他在Ship.IsValid函数中发现了一个错误.它已被修复.请下载该框架的更新版本.
编辑2:
由于人们对将统计信息持久存储到磁盘等方面非常感兴趣,因此我添加了一些应该提供所需功能的非定时设置和拆除事件.这是一个半破坏性的变化.也就是说:界面已经过修改以添加功能,但不需要它们.请下载该框架的更新版本.
编辑3:
错误修复1:GameWon并且GameLost只在超时的情况下被调用.
错误修复2:如果引擎在每场比赛中超时,则比赛永远不会结束.
请下载该框架的更新版本.
编辑4:
比赛结果:

如何更改以下代码,每次从数据库中获取50个不同的随机数据?
return (from examQ in idb.Exam_Question_Int_Tbl
where examQ.Exam_Tbl_ID==exam_id
select examQ).OrderBy(x=>x.Exam_Tbl_ID).Take(50);
Run Code Online (Sandbox Code Playgroud) 我已经搜索了一段时间并且一直在努力寻找这个,我正在尝试生成几个随机的,唯一的数字是C#.我正在使用System.Random,我正在使用DateTime.Now.Ticks种子:
public Random a = new Random(DateTime.Now.Ticks.GetHashCode());
private void NewNumber()
{
MyNumber = a.Next(0, 10);
}
Run Code Online (Sandbox Code Playgroud)
我NewNumber()经常打电话,但问题是我经常会重复数字.有些人建议因为我每次都是随机声明它,它不会产生随机数,所以我把声明放在我的函数之外.有什么建议或比使用更好的方法System.Random?谢谢
一切都在标题中.我想知道是否有人知道快速和合理的内存需求随机混合300万行文件的所有行的方式.我想用简单的vim命令是不可能的,所以任何使用Python的简单脚本都是如此.我使用随机数生成器尝试使用python,但没有设法找到一个简单的方法.
如何从我的阵列中挑选一个随机字符串,但不要两次选择相同的字符串.
string[] names = { "image1.png", "image2.png", "image3.png", "image4.png", "image5.png" };
Run Code Online (Sandbox Code Playgroud)
这可能吗?我正在考虑使用
return strings[random.Next(strings.Length)];
Run Code Online (Sandbox Code Playgroud)
但这有可能两次返回相同的字符串.或者我错了吗?我应该使用其他类似的东西List来实现这一目标.欢迎任何反馈.
我正在尝试为一个列出一副卡片内容的项目编写一个代码,询问该人想要洗牌的次数,然后将它们洗牌.它必须使用一个方法来使用System.Random类创建两个随机整数.
这些是我的课程:
Program.cs中:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Deck mydeck = new Deck();
foreach (Card c in mydeck.Cards)
{
Console.WriteLine(c);
}
Console.WriteLine("How Many Times Do You Want To Shuffle?");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Deck.cs:
namespace ConsoleApplication1
{
class Deck
{
Card[] cards = new Card[52];
string[] numbers = new string[] { "2", "3", "4", "5", "6", "7", "8", "9", "J", "Q", "K" };
public Deck()
{
int i = 0;
foreach(string s in numbers)
{ …Run Code Online (Sandbox Code Playgroud) 我需要以随机顺序从一个范围(例如从x到y)创建一个数字列表,这样每个订单都有相同的机会.
对于我用C#编写的音乐播放器,我需要这个,以随机顺序创建播放列表.
有任何想法吗?
谢谢.
编辑:我对更改原始列表不感兴趣,只需从随机顺序中的某个范围中获取随机索引,以便每个订单都有相同的机会.
这是我到目前为止所写的内容:
public static IEnumerable<int> RandomIndexes(int count)
{
if (count > 0)
{
int[] indexes = new int[count];
int indexesCountMinus1 = count - 1;
for (int i = 0; i < count; i++)
{
indexes[i] = i;
}
Random random = new Random();
while (indexesCountMinus1 > 0)
{
int currIndex = random.Next(0, indexesCountMinus1 + 1);
yield return indexes[currIndex];
indexes[currIndex] = indexes[indexesCountMinus1];
indexesCountMinus1--;
}
yield return indexes[0];
}
}
Run Code Online (Sandbox Code Playgroud)
它正在工作,但唯一的问题是我需要在内存中分配一个大小为的数组count.我正在寻找不需要内存分配的东西.
谢谢.