Установить значение случайного свойства из списка - PullRequest
1 голос
/ 17 июня 2020

Пожалуйста, проверьте код ниже. Я пытаюсь установить значение случайного свойства списка int. Проблема в том, что даже после того, как i установит 5 в случайный список, это значение будет вставлено в это свойство. Что я здесь делаю не так?

var TransactionList = new List<int>();
for (int i = 0; i < 59; i++)
{
    TransactionList.Add(0);
}

var randTransaction = TransactionList.OrderBy(x => Guid.NewGuid()).FirstOrDefault();

//here i am trying to set 5 value to a random TrnasactionList but this not being set
randTransaction = 5;

Ответы [ 3 ]

5 голосов
/ 17 июня 2020

Попробуйте, как показано ниже. new Random().Next(0, 59); вернет значение от 0 до 59. Или вы можете лучше установить его как new Random().Next(0, TransactionList.Count);, чтобы он был динамическим c с list.

new Random().Next(minValue, maxValue); maxValue для верхней границы в методе Next() - эксклюзивный - диапазон включает minValue, maxValue-1 и все числа между ними.

var TransactionList = new List<int>();
for (int i = 0; i < 59; i++)
{
    TransactionList.Add(0);
}

// var index = new Random().Next(0, 59);
// Below will work for dynamic length of list.
var index = new Random().Next(0, TransactionList.Count);
TransactionList[index] = 5;
3 голосов
/ 17 июня 2020

Если вы не против сортировки исходного списка, вы можете сделать это:

class Program
{
    static void Main(string[] args)
    {
        var transactionList = new List<int>();
        for (int i = 0; i < 59; i++)
        {
            //I initialized the list with i instead of 0 to better see sorting in place
            transactionList.Add(i);
        }

        transactionList.Sort(new RandomComparer());
        //changed it to 99 to spot it more easily
        transactionList[0] = 99;

        foreach (var i in transactionList)
            Console.WriteLine(i);
    }
}

public class RandomComparer : IComparer<int>
{
    private Random _random = new Random();
    public int Compare(int x, int y)
    {
        return _random.Next(-1, 2);
    }
}

Посмотреть в действии:

https://dotnetfiddle.net/NKuPdx

0 голосов
/ 17 июня 2020

randTransaction - это тип данных "int", который является примитивным типом данных.

если вы хотите установить randTransaction, отражающий его объект, просто установите сам объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...