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

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

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

Author24 — интернет-сервис помощи студентам
Есть интовый массив. как из этого массива записать 20 случайных чисел в другой массив?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2013, 14:06
Ответы с готовыми решениями:

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

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

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

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

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

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

А код плз выложи на сайт через теги C# =)
0
13 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 127
28.06.2013, 16:14  [ТС] 23
Я говорю же) начинающий я так и не познавший) xml, создание классов и т.д.... Я лучше так помучусь) к сожалению конечно) времени просто маловато, познавать новое... Надо как то с этим разобраться...
код каких именно форм?)
0
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
28.06.2013, 16:16 24
Ну саму реализацию с массивами - то, что обсуждали на счет случайных чисел и т.д., вот этот код давайте )
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
28.06.2013, 16:36 25
Самый оптимальный способ который я знаю.
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
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
28.06.2013, 16:43 26
Ну да, тоже неплохой вариант, думаю это даже будет получше, чем хранить список с уже попадающимися числами, тут посути каждый раз не будем блуждать по массиву чисел, чтобы найти было оно уже или нет)
1
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
28.06.2013, 17:01 27
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  [ТС] 28
Спасибо!) А можно мини комментарии чуть-чуть добавить к коду? array- вообще не помню о них ничего((
особенно код с алгоритмом Фишера
0
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
28.06.2013, 17:13 29
Да, но здесь же если будут элементы со схожими числами, то они бы в новый массив попали 2 раза

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

Алгоритм Фишера–Йетса ( Псевдо код ):
Код
Для тасования массива 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 31
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  [ТС] 32
)))) глупо - но сделал сам и работает)))))) Если может кто укоротить данный пример, буду премного благодарен)
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
29.06.2013, 11:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2013, 11:14
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru