Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 76

Сгенерировать 10 случайных чисел в диапазоне от 0 до 1, чтобы в сумме получить 1

05.04.2015, 17:52. Показов 8804. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день подскажите как выполнить это
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2015, 17:52
Ответы с готовыми решениями:

Сгенерировать 5 случайных чисел, в сумме дающих 100
как сгенерировать 5 случайных чисел в сумме дающих 100

Сгенерировать 10 случайных целых чисел в диапазоне от N до M
Сгенерировать 10 случайных целых чисел в диапазоне от N до M var n,m,a,i:integer; begin read(n,m); writeln; randomize; for...

Сгенерировать 7 случайных чисел в диапазоне от 3 до 33. Вывести их на экран.
как написать вот такую программку? Сгенерировать 7 случайных чисел в диапазоне от 3 до 33. Вывести их на экран. Сколько чисел делится...

30
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10428 / 5158 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
05.04.2015, 19:06
Студворк — интернет-сервис помощи студентам
Victoria_Orel,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        static double[] Generate()
        {
            var rnd = new Random();
            var res = new double[10];
            var sum = 0d;
 
            for (int i = 0; i < res.Length; i++)
                sum += res[i] = rnd.NextDouble();
 
            for (int i = 0; i < res.Length; i++)
                res[i] /= sum;
 
            return res;
        }
1
 Аватар для Fantom2209
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
05.04.2015, 19:09
Victoria_Orel, если код правильный, то можно) Там очень легко... Если ты не особо спешишь, я помогу.

Баир,

C#
1
2
if((i == 9) && (sum(array) == 1)
        break;
с цикла мы выйдем только в том случае, если i = 9 а сумма равна 1. Если сильно долго будет подбирать последний элемент можно сделать так.
C#
1
array[9] = 1 - sum(array);
1
18 / 18 / 9
Регистрация: 23.02.2015
Сообщений: 86
05.04.2015, 19:13
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
public static void Main(){
  double[] array = new double[10];
  Random rand = new Random();
  while(sum(array)<=1 && arrayContainNull) {
    array[i] = rand.NextDouble() * 0.2;
    i++;
    if(i>9) i=0;
  }
  array[i]-=1-sum(array[i]);
}
public double sum(double[] array){
  double sum=0;
  foreach(var i in array){
    sum+=i;
  }   
}
public bool arrayContainNull(double[] array){
  forech(var i in array){
    if(i==0){
      return true;
    }
    return false;
  }
}
1
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
05.04.2015, 19:24
Загляните лучше еще сюда:
Сгенерировать 5 случайных чисел так, чтобы их сумма была равна заданному числу
0
18 / 18 / 9
Регистрация: 23.02.2015
Сообщений: 86
05.04.2015, 19:24
Storm23, ты просто мастер джейдай =)
0
 Аватар для Victoria_Orel
1 / 1 / 1
Регистрация: 26.02.2012
Сообщений: 76
05.04.2015, 19:27  [ТС]
Fantom2209, не спешу)
0
 Аватар для Fantom2209
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
05.04.2015, 19:27
sldp, Согласен, но если последний элемент получить таким образом

C#
1
array[9] = 1 - sum(array);
то будет намного меньше итераций. Хотя не уверен, проверить пока не могу((
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
05.04.2015, 19:50
Вариант для извращенцев
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
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] nase4ki0 = new double[11];
            double[] nase4ki = new double[11];// представим себе отрезок, на который мы собираемся выставить 10 точек, расстояния между точками и будут искомыми числами
            nase4ki0[0] = 0;
            nase4ki0[10] = 1; 
            double[] numbers = new double[10];
            Random rand = new Random();
 
            for (int i = 1; i < 10; i++) {
                double x = rand.NextDouble();
                bool norm = true;
                for (int z = 1; z < 10; z++) { if (nase4ki0[z] == x) {norm=false; break;} } //исключаем повторения
                if(norm){nase4ki0[i] = x;} else{i--;}
        }
 
 
            for (int i = 1; i < 11; i++)              //отсортируем массив точек на отрезке, отсортированный вариант - в nase4ki
            {    
                int mesto = 1;
                for (int j = 1; j < 11; j++) {
                    if (nase4ki0[i] > nase4ki0[j]) { mesto++; }
                }
                nase4ki[mesto] = nase4ki0[i];
            }
 
            double summa = 0;
            for (int i = 0; i < 10; i++) { numbers[i] = nase4ki[i + 1] - nase4ki[i]; Console.WriteLine(numbers[i]); summa += numbers[i]; } //вычисляем расстояния между точками и записываем их в numbers, что и является искомыми числами
            Console.WriteLine(summa);
            Console.ReadLine();
            
        }
    }
}
0
 Аватар для Fantom2209
30 / 30 / 20
Регистрация: 28.02.2014
Сообщений: 195
05.04.2015, 22:19
Victoria_Orel, не знаю, еще нужно или нет, но прилаживаю готовый проект с формой.
Вложения
Тип файла: rar mass01.rar (51.8 Кб, 2 просмотров)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.04.2015, 23:50
Лучший ответ Сообщение было отмечено ViterAlex как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Linq;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] d = new double[10];
            var r = new Random();
            for (int i = 0; i < d.Length; i++)
                d[i] = r.NextDouble();
            double mult = 1/d.Sum();
            for (int i = 0; i < d.Length; i++)
                d[i] *= mult;
 
            foreach (double x in d)
                Console.Write("{0:N} ", x);
            Console.WriteLine(" = {0}", d.Sum());
        }
    }
}
0
06.04.2015, 11:56

Не по теме:

delete
слепой, не увидел вторую страницу с решением

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2015, 11:56

Сгенерировать два массива A и B случайных чисел в диапазоне [0,55]
Сгенерировать два массива A и B случайных чисел в диапазоне . Генерацию осуществить с помощью процедуры. Найти для каждого столбца матриц...

Сгенерировать 10 случайных чисел в диапазоне от -10 до 10. Вывести на экран количество положительных чисел
Помогите написать программку в Паскале, что сгенерирует 10 случайных чисел в диапазоне от -10 до 10. Вывести на экран количество...

Сгенерировать 4000 целых случайных чисел в диапазоне от -3000 до 7000 и записать их в текстовый файл
Помогите плиз!!! Заранее спасибо!!!!!! №1. Сгенерировать 4000 целых случайных чисел в диапазоне от -3000 до 7000 и записать их в...

С помощью датчика случайных чисел получить 30 целых чисел, лежащих в диапазоне от 0 до 5
Здраствуйте! С помощью датчика случайных чисел получить 30 целых чисел, лежащих в диапазоне от 0 до 5 включительно, но вывести на экран...

Сгенерировать набор случайных чисел, чтобы их сумма была равна заданному числу n
Доброго времени суток!) Помогите пожалуйста. Нужно сгенерировать набор случайных чисел, чтобы их сумма была равна заданному числу n. ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru