Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127

Получение случайных переменных из массива

28.06.2013, 14:06. Показов 2551. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть интовый массив. как из этого массива записать 20 случайных чисел в другой массив?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2013, 14:06
Ответы с готовыми решениями:

Получение случайных чисел
Здравствуйте. Возникла необходимость получения трёх случайных целых чисел -1,0,1. Не смог придумать, как это можно сделать. Помогите,...

Получение случайных чисел
Необходимо исправить написанную на с++ программу так, чтобы числа задавались случайным образом, а не как в этой программе ручную: ...

Получение случайных комбинаций
Привет! есть такая строка : select "" +a+b+c+d+e+f+g+h+i+j+k; мне надо написать рандом, который сделает (если можно не писать все...

31
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127
28.06.2013, 15:52  [ТС]
Студворк — интернет-сервис помощи студентам
Идея была такова) в 1 файл записывать вопросы и варианты ответов, в другой правильные ответы в виде ну например ответ С - это 00100....
Потом идея была такова, достать с этого файла 20 случайных вопросов, получив на них ответы сравнить с правильными) ну в 2-х словах как то так(
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.06.2013, 16:01
Я бы наверно не мучался, а сделал это через классы, допустим класс Question(вопрос) и у него есть свойства такие как текст сообщения, коллекция с вариантами ответов и собственно сам правильный ответ.

Еще бы наверно создал класс для коллекции вопросов и в нем бы так же метод какой-нибудь типа GetRandomQuestions , так же был бы метод для проверки ответов на правильность, ну и в файл бы наверно сохранял через сериализацию ну на крайняк в xml, но с xml муторно работать, недолюбливаю я его)

А код плз выложи на сайт через теги C# =)
0
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127
28.06.2013, 16:14  [ТС]
Я говорю же) начинающий я так и не познавший) xml, создание классов и т.д.... Я лучше так помучусь) к сожалению конечно) времени просто маловато, познавать новое... Надо как то с этим разобраться...
код каких именно форм?)
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.06.2013, 16:16
Ну саму реализацию с массивами - то, что обсуждали на счет случайных чисел и т.д., вот этот код давайте )
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
28.06.2013, 16:36
Самый оптимальный способ который я знаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define CYBERFORUM
using System.Diagnostics;
using CyberForum = System;
 
 
internal class Program
{
    [Conditional("CYBERFORUM")]
    private static void main()
    {
        int[] array = new int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        int[] resultArray = new int[10];
        bool[] checkArray = new bool[array.Length];
 
        CyberForum.Random random = new CyberForum.Random();
 
        int count = 0;
        while ( count < 10 )
        {
            int tmp = random.Next( 0, 10 );
 
            if ( !checkArray[tmp] )
            {
                resultArray[count++] = array[tmp];
                checkArray[tmp] = true;
            }
        }
 
        CyberForum.Array.ForEach( resultArray, x => CyberForum.Console.Write( x + " " ) );
        CyberForum.Console.ReadKey( true );
    }
    private static void Main(string[] args)
    {
        main();
    }
}
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.06.2013, 16:43
Ну да, тоже неплохой вариант, думаю это даже будет получше, чем хранить список с уже попадающимися числами, тут посути каждый раз не будем блуждать по массиву чисел, чтобы найти было оно уже или нет)
1
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
28.06.2013, 17:01
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define CYBERFORUM
using System.Diagnostics;
using CyberForum = System;
 
 
internal class Program
{
    [Conditional( "CYBERFORUM" )]
    private static void main()
    {
        int[] array = new int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        CyberForum.Random random = new CyberForum.Random();
 
        for ( int i = array.Length - 1; i > 0; i-- )
            Swap( ref array[random.Next( 0, i + 1 )], ref array[i] );
 
        CyberForum.Array.ForEach( array, x => CyberForum.Console.Write( x + " " ) );
        CyberForum.Console.ReadKey( true );
    }
 
    private static void Swap<T>( ref T a, ref T b )
    {
        T c = a;
        a = b;
        b = c;
    }
 
    private static void Main(string[] args)
    {
        main();
    }
}
Использовался алгоритм Фишера–Йетса. http://ru.wikipedia.org/wiki/%... 1%81%D0%B0
1
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127
28.06.2013, 17:09  [ТС]
Спасибо!) А можно мини комментарии чуть-чуть добавить к коду? array- вообще не помню о них ничего((
особенно код с алгоритмом Фишера
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.06.2013, 17:13
Да, но здесь же если будут элементы со схожими числами, то они бы в новый массив попали 2 раза

Добавлено через 1 минуту
А нет, все норм, нам же надо, чтобы именно индексы не повторялись, тогда все супер =)
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
28.06.2013, 17:13
Массив — это структура данных, содержащая несколько переменных одного типа. Массив объявляется следующим образом:
C#
1
type[] arrayName;
Массив может быть одномерным, многомерным или массивом массивов.
Значение по умолчанию числовых элементов массива задано равным нулю, а элементы ссылок имеют значение NULL.
Индексация массивов начинается с нуля: массив с элементами n индексируется от 0 до n-1.
Элементы массива могут быть любых типов, включая тип массива.

Алгоритм Фишера–Йетса ( Псевдо код ):
Code
1
2
3
4
Для тасования массива a из n элементов (индексы 0..n-1):
  для всех i от n - 1 до 1 выполнить
       j = случайное число 0 <= j <= i
       обменять местами a[j] и a[i]
1
369 / 341 / 108
Регистрация: 12.02.2013
Сообщений: 653
28.06.2013, 22:47
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Random rand = new Random();
            int size1 = 50;
            int size2 = 20;
            int[] mas = new int[size1];
            int[] siv = new int[size2];
 
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = rand.Next(100); Console.Write(mas[i] + " ");
            }
 
            Console.WriteLine("\n");
 
            for (int i = 0; i < siv.Length; i++)
            {
                siv[i] = mas[rand.Next(0, (size1 - 1))]; Console.Write(siv[i] + " ");
            }
 
 
            Console.ReadLine();
        }
    }
}
1
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127
29.06.2013, 11:14  [ТС]
)))) глупо - но сделал сам и работает)))))) Если может кто укоротить данный пример, буду премного благодарен)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Random rnd = new Random();
            int [] oo = new int[20];            
            for (int i = 0; i < 20; i++)
            {                
                int o = rnd.Next(0, c);                
                if (i == 0 )
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else if (i == 1 && o != oo[i - 1])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 2 && o != oo[i - 1] && o != oo[i - 2])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 3 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 4 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 5 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 6 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 7 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 8 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 9 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else
                if (i == 10 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else
                if (i == 11 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 12 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 13 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else
                if (i == 14 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 15 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14] && o != oo[i - 15])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 16 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14] && o != oo[i - 15] && o != oo[i - 16])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 17 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14] && o != oo[i - 15] && o != oo[i - 16] && o != oo[i - 17])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else 
                if (i == 18 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14] && o != oo[i - 15] && o != oo[i - 16] && o != oo[i - 17] && o != oo[i - 18])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else
                if (i == 19 && o != oo[i - 1] && o != oo[i - 2] && o != oo[i - 3] && o != oo[i - 4] && o != oo[i - 5] && o != oo[i - 6] && o != oo[i - 7] && o != oo[i - 8] && o != oo[i - 9] && o != oo[i - 10] && o != oo[i - 11] && o != oo[i - 12] && o != oo[i - 13] && o != oo[i - 14] && o != oo[i - 15] && o != oo[i - 16] && o != oo[i - 17] && o != oo[i - 18] && o != oo[i - 19])
                { oo[i] = o; textBox2.Text += oo[i].ToString() + ", "; }
                else i--;                
            }
Добавлено через 2 минуты
Есть еще 1 вопрос. Вот у меня по нажатию кнопки должен новый вопрос выводиться, а как сделать что бы 1-й вопрос сам сразу выводил, а последующие по нажатию кнопки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2013, 11:14

Несколько комбинаций случайных чисел для пяти переменных
Здравствуйте! Есть пять переменных a b c d e. Они могут принимать значения 0 или 1. Как написать генератор случайных чисел для них, но ...

Генератор случайных чисел 0 или 1 для пяти переменных
Здравствуйте! Есть пять переменных, которые будут участвовать в разветвляющемся алгоритме. Этим переменным нужно присвоить рандомно 0 или 1...

Получение переменных из FormData
Приветствую всех, возник вопрос. Как присвоить в php значения из FormData ---- (js) Как правильно к ним обращаться?

Получение переменных из классов
Можно ли что то подобное реализовать class A{ $tbl_city = 'city'; functuon foo(){} } class B extends A{ function get(){...

Получение переменных окружения
Интересует как правильно получить список переменных окружения(среды). Т.е то что выводит команда SET в консоли Есть код по примеру...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru