相关疑难解决方法(0)

随机化List <T>

在C#中随机化通用列表顺序的最佳方法是什么?我在一个列表中有一组有限的75个数字,我想为其分配一个随机顺序,以便为抽奖类型的应用程序绘制它们.

c# generic-list

795
推荐指数
13
解决办法
40万
查看次数

随机数生成器仅生成一个随机数

我有以下功能:

//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"数组的所有成员都具有相同的值.

为什么会这样?

c# random

741
推荐指数
8
解决办法
17万
查看次数

什么是最好的战舰AI?

战舰!

早在2003年(当时我17岁),我就参加了战舰AI编码比赛.即使我输掉了那场比赛,我也玩得很开心并从中学到了很多东西.

现在,我想在这场比赛中复活,寻找最好的战舰AI.

这是框架,现在托管在Bitbucket上.

获奖者将获得+450声望!比赛将于2009年11月17日开始.不接受17日零时以外的参赛作品或编辑.(中央标准时间)提前提交您的参赛作品,这样您就不会错过机会!

为了保持这个目标,请遵循竞争精神.

游戏规则:

  1. 游戏将在10x10网格上进行.
  2. 每个参赛者将5艘船(长度分别为2,3,3,4,5)放置在其网格上.
  3. 没有船只可能重叠,但它们可能相邻.
  4. 然后竞争对手轮流对对手开枪.
    • 游戏的一个变种允许每次击球射击多次射击,每个幸存的船只射击一次.
  5. 如果击球下沉,命中或未命中,对手将通知对手.
  6. 当任何一个玩家的所有船只都沉没时,游戏结束.

比赛规则:

  1. 竞争的精神是找到最好的战舰算法.
  2. 任何被视为违反竞争精神的东西都将被取消资格.
  3. 干扰对手是违背竞争精神的.
  4. 多线程可以在以下限制下使用:
    • 在轮到你的时候,不超过一个线程可能正在运行.(但是,任意数量的线程可能处于"暂停"状态).
    • 没有线程可以以"正常"以外的优先级运行.
    • 鉴于上述两个限制,您将在转弯期间保证至少3个专用CPU核心.
  5. 每个游戏的CPU时间限制为1秒,分配给主线程上的每个竞争对手.
  6. 时间不多会导致当前游戏失败.
  7. 任何未处理的异常都将导致失去当前的游戏.
  8. 允许网络访问和磁盘访问,但您可能会发现时间限制相当令人望而却步.然而,为了减轻时间紧张,增加了一些设置和拆卸方法.
  9. 代码应作为答案发布在堆栈溢出上,或者如果太大则链接.
  10. 条目的最大总大小(未压缩)为1 MB.
  11. 官方说来,.Net 2.0/3.5是唯一的框架要求.
  12. 您的条目必须实现IBattleshipOpponent接口.

评分:

  1. 101场比赛中最好的51场比赛是一场比赛的胜利者.
  2. 所有竞争对手都将相互配对,循环风格.
  3. 然后,最好的一半竞争者将参加双重淘汰赛以确定获胜者.(实际上,2的最小功率大于或等于一半.)
  4. 我将使用TournamentApi框架进行锦标赛.
  5. 结果将在此处公布.
  6. 如果您提交了多个条目,则只有您的得分最高的条目才有资格获得双重条目.

祝好运!玩得开心!


编辑1:
感谢Freed,他在Ship.IsValid函数中发现了一个错误.它已被修复.请下载该框架的更新版本.

编辑2:
由于人们对将统计信息持久存储到磁盘等方面非常感兴趣,因此我添加了一些应该提供所需功能的非定时设置和拆除事件.这是一个半破坏性的变化.也就是说:界面已经过修改以添加功能,但不需要它们.请下载该框架的更新版本.

编辑3:
错误修复1:GameWon并且GameLost只在超时的情况下被调用.
错误修复2:如果引擎在每场比赛中超时,则比赛永远不会结束.
请下载该框架的更新版本.

编辑4:
比赛结果:

.net c# artificial-intelligence

315
推荐指数
10
解决办法
6万
查看次数

linq:随机排序

如何更改以下代码,每次从数据库中获取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# linq random

59
推荐指数
3
解决办法
5万
查看次数

生成随机,唯一的值C#

我已经搜索了一段时间并且一直在努力寻找这个,我正在尝试生成几个随机的,唯一的数字是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?谢谢

.net c# random unique

28
推荐指数
4
解决办法
8万
查看次数

随机混合300万行文件

一切都在标题中.我想知道是否有人知道快速和合理的内存需求随机混合300万行文件的所有行的方式.我想用简单的vim命令是不可能的,所以任何使用Python的简单脚本都是如此.我使用随机数生成器尝试使用python,但没有设法找到一个简单的方法.

python random vim

26
推荐指数
3
解决办法
2万
查看次数

从数组中选择随机字符串

如何从我的阵列中挑选一个随机字符串,但不要两次选择相同的字符串.

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来实现这一目标.欢迎任何反馈.

c# arrays string random

26
推荐指数
3
解决办法
8万
查看次数

随机列表<T>

可能重复:
在C#中随机化List <T>

我有一个列表,其中包含数千个FilePath到音频文件的位置,并想知道哪个是"洗牌"列表的最有效方法?

任何帮助是极大的赞赏 :)

谢谢

c# shuffle list

16
推荐指数
3
解决办法
2万
查看次数

在C#中洗牌

我正在尝试为一个列出一副卡片内容的项目编写一个代码,询问该人想要洗牌的次数,然后将它们洗牌.它必须使用一个方法来使用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)

.net c# shuffle playing-cards

13
推荐指数
3
解决办法
5万
查看次数

随机播放列表算法

我需要以随机顺序从一个范围(例如从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.我正在寻找不需要内存分配的东西.

谢谢.

c# algorithm smart-playlist playlist

13
推荐指数
3
解决办法
6244
查看次数