Как получить доступ к случайному объекту в списке?

Если вы используете UITableView в VC1, затем перезагрузите его в viewWillAppear, тогда вы получите обновление или это вы обновите свой список

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    self.tableview.reloadData() 

}
217
задан Abdullah Ilgaz 20 September 2018 в 03:41
поделиться

5 ответов

  1. Создайте где-нибудь экземпляр класса Random . Обратите внимание, что очень важно не создавать новый экземпляр каждый раз, когда вам нужно случайное число. Вы должны повторно использовать старый экземпляр, чтобы добиться единообразия сгенерированных чисел. Вы можете иметь где-нибудь поле static (будьте осторожны с проблемами безопасности потоков):

     static Random rnd = new Random ();
     
  2. Попросите экземпляр Random дать вам случайное число с максимальным из числа элементов в ArrayList :

     int r = rnd.Next (list.Count.  );
     
  3. Вывести строку:

     MessageBox.Show ((строка) список [r]);
     
384
ответ дан 23 November 2019 в 04:13
поделиться

Печать случайным образом название страны из файла JSON.
Модель:

public class Country
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

Implementaton:

string filePath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")) + @"Data\Country.json";
            string _countryJson = File.ReadAllText(filePath);
            var _country = JsonConvert.DeserializeObject<List<Country>>(_countryJson);


            int index = random.Next(_country.Count);
            Console.WriteLine(_country[index].Name);
0
ответ дан 23 November 2019 в 04:13
поделиться

Создайте экземпляр Случайный:

Random rnd = new Random();

Получите случайную строку:

string s = arraylist[rnd.Next(arraylist.Count)];

Помните, что если вы делаете это часто, вы должны повторно использовать объект Случайный. Поместите его в класс как статическое поле, чтобы он инициализировался только один раз, а затем обращайтесь к нему.

.
20
ответ дан 23 November 2019 в 04:13
поделиться

Вы можете сделать:

list.OrderBy(x => Guid.NewGuid()).FirstOrDefault()
87
ответ дан 23 November 2019 в 04:13
поделиться

Обычно я использую эту небольшую коллекцию методов расширения:

public static class EnumerableExtension
{
    public static T PickRandom<T>(this IEnumerable<T> source)
    {
        return source.PickRandom(1).Single();
    }

    public static IEnumerable<T> PickRandom<T>(this IEnumerable<T> source, int count)
    {
        return source.Shuffle().Take(count);
    }

    public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source)
    {
        return source.OrderBy(x => Guid.NewGuid());
    }
}

Для строго типизированного списка это позволит вам написать:

var strings = new List<string>();
var randomString = strings.PickRandom();

Если все, что у вас есть, это ArrayList, вы можете использовать его:

var strings = myArrayList.Cast<string>();
129
ответ дан 23 November 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: