Это # программа C, предполагают, чтобы быть программой блэкджек, но мне нужно «SHUFFLE» карта и просто отобразить «HAND»C# Blackjack - Нужна помощь
Остальное я думаю, что я могу управлять ... может кто-то Помоги мне?
Это # программа C, предполагают, чтобы быть программой блэкджек, но мне нужно «SHUFFLE» карта и просто отобразить «HAND»C# Blackjack - Нужна помощь
Остальное я думаю, что я могу управлять ... может кто-то Помоги мне?
Я думаю, что он уже был покрыт here.
Вы должны были добавить этот комментарий, а не как ответ. – ChrisF
@ChrisF: Я бы согласился, что это больше похоже на комментарий, но знаете ли вы какие-либо фактические рекомендации относительно того, что делает комментарий, а не ответ? Я попытался найти его на мета, но не смог найти ничего подходящего. – Patrick
@Patrick - может быть, нам нужно, чтобы некоторые из них задавали вопросы (ссылка на меня убегает прямо сейчас) – ChrisF
Один из способов перетасовать является создание нового массива и перемещения карты в этом массиве в случайном порядке
List<Card> unshuffled = new List<Card>(pack);
pack = new Card[NUM_CARDS];
Random r = new Random()
for(int card = 0; card < NUM_CARDS; card++)
{
pack[card] = unshuffled[r.Next(0, unshuffled.Count -1)];
unshuffled.remove(pack[card]);
}
Вы можете сделать экземпляр Random
глобальным, как создание нового случайного каждый раз уменьшает энтропию в некотором роде. Это может быть неважно, если вы не перетасовываете много.
Большое спасибо .. это поможет: D это работает – Sydney
Я бы рекомендовал просто переключение каждый элемент случайным образом другой, вот как:
private void switchElements(Card[] pack, int nr_1, int nr_2) {
Card temp = pack[nr_1];
pack[nr_1] = pack[nr_2];
pack[nr_2] = temp;
}
public void shuffle(Card[] pack) {
for (int i = pack.length - 1; i > 0; i--)
switchElements(pack, i,random.Next(0,i));
}
Ум, разве это не гарантирует, что какая-либо последняя карта в пакете [] перед вызовом shuffle не может быть последней карточкой в пакете [] после тасования? –
Это так же просто, как: выберите случайную карту и положите ее на палубу 2, пока вы не сделаете это для всех карт в колоде 1. Единственное отличие состоит в том, что нет колоды 2, собранные карты хранятся на верхней палубе 1 Это также работает Java ** Collections.shuffle() **. – Margus
Вы можете «перетасовать» пакет с чем-то же просто, как:
var shuffled = pack.OrderBy(c => random.NextDouble());
Может ли это вызвать бесконечный цикл? Будет зависеть от того, какой тип типа LINQ использует здесь. – Bryan
Нет, это не вызовет бесконечный цикл - это тоже не оптимальное решение, но, учитывая уровень домашней работы (хотя кажется, что исходный исходный код теперь удален), было бы просто реализовать, в отличие от Fisher-Yates –
Похоже, кто-то обманывает его/ее назначение программирования. Я уверен, что вы вырастут, чтобы стать миллионером в любом случае ... – danijels
Если это домашнее задание, можем ли мы перенаправить его как таковое? – jcolebrand
'public static int' запрашивает проблемы. Либо 'public static readonly int', либо' public const int'. По умолчанию константы являются статическими. –