Форум программистов, компьютерный форум CyberForum.ru

Генерация случайных чисел в заданном диапазоне. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблемма с логическим оператором if http://www.cyberforum.ru/cpp-beginners/thread334159.html
Всем привет. Мне надо было написать такую програмку: если пользователь вводит символ 'y' (yes), то он задаёт данные в структуру, которые в последствии отображаются, а елси пользователь вводит символ 'n' (no), то на экран выводятся данные структуры по умолчанию. Вот моя неправильно работающая программа: #include <iostream> using namespace std; struct CandyBar { char name; ...
C++ Непонятная ошибка Не могу понять, где неправильно. У меня есть такая матрица А 1 4 2 1 3 6 1 5 2 2 3 5 Мне же её надо преобразовать к такому виду - В: 4 0 0 0 1 6 5 2 5 В матрице А числа идут как бы парами. Как получается матрица В из А? Пусть b - элемент матрицы В. i - номер строки в матрице А. j - первый элемент "пары", а значение - второй элемент. http://www.cyberforum.ru/cpp-beginners/thread334155.html
C++ Как поместить в массив строк строку
Есть такой вот массив char s; ну или char** s; я никак не могу разобраться в этих указателях(( 1.Как поместить в него строку 2.Как извлечь из него строку
Вывод строки в текстовый файл C++
Вместо строки появляется нечто вроде 25d3fe4 Подскажите пожалуйста, в чем ошибка? ofstream fout; String str = Now(); fout << str.c_str();
C++ ofstream & ifstream :: binary read-write struct http://www.cyberforum.ru/cpp-beginners/thread334133.html
Не пойму в чем дело... но я не могу считать всю структуру FNTBINARY из файла, файл - это она и есть в бинарном виде, одна структура FNTBINARY. Размер структуры 72412, файл на диске весит 72440 откуда, берутся 8 байт? Формат записи-чтения установлен бинарный. Читается только часть, до chars... дальше мусор. Проверял, что пишется структура полностью адекватная перед записью, содержит нормальные...
C++ Непонятная ошибка Нужно считать в вектор пар все числа, отличные от нуля. В паре - первое число - всегда типа int, второе - double. Написал небольшую ф-цию. Но не получается считать. Проблема - в одной строчке.. не понимаю как ее решить. "Debug Assertion failed" - vector subscript out of range. Из файла считываю вот такую последовательность: 1 4 0 2 1 3 6 0 1 5 2 2 3 5 0 А вот мой код: double b; vector... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.07.2011, 20:22     Генерация случайных чисел в заданном диапазоне.
По-моему это из маразматического шаманства что-то... Просто из любопытства сделал вот такую штуку
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    
#define NUM_TESTS 100000000
    
int randomNumber(int hi)  // Правильный генератор случайных чисел для области значений [0,hi]
{
    // Получение области значений [0,1)
    const float scale = rand()/(float)RAND_MAX;
 
    // Возврат значения в области значений [0,hi]
    return (int)(scale*hi + 0.5); // неявное приведение типа и отброс дробной части числа
}
    
int main(void){
    int counters[2][10] = { 0 }, i;
    
    srand(time(NULL));
    for ( i = 0; i < NUM_TESTS; ++i ){
        ++counters[0][rand() % 10];
        ++counters[1][randomNumber(9)];
    }
    
    printf("Distribution of %d numbers from 0 to 9:\n", NUM_TESTS);
    printf("#       Use %%          Use function\n");
    for ( i = 0; i < 10; ++i )
        printf("%d%15d%15d\n", i, counters[0][i], counters[1][i]);
    
    return 0;
}
вывела
Код
C:\cpp\other>gcc -o many_randoms many_randoms.c

C:\cpp\other>many_randoms.exe
Distribution of 100000000 numbers from 0 to 9:
#       Use %          Use function
0       10003390        5555490
1       10001169       11105983
2       10001368       11105353
3        9994094       11111500
4        9997676       11117890
5       10003123       11113689
6       10001206       11113432
7       10003832       11104756
8        9996405       11116064
9        9997737        5555843

C:\cpp\other>many_randoms.exe
Distribution of 100000000 numbers from 0 to 9:
#       Use %          Use function
0        9995435        5553140
1       10004696       11115578
2       10001687       11104934
3       10003189       11114208
4       10000565       11116535
5       10000915       11108100
6       10002122       11110761
7        9999504       11105725
8       10000108       11112267
9        9991779        5558752

C:\cpp\other>many_randoms.exe
Distribution of 100000000 numbers from 0 to 9:
#       Use %          Use function
0        9997536        5555975
1       10003821       11110893
2        9998371       11113640
3        9998315       11113127
4       10002654       11107470
5       10002168       11110817
6       10001548       11110728
7        9997697       11105850
8        9999866       11111303
9        9998024        5560197

C:\cpp\other>
Если я правильно понимаю, значение каждого счётчика должно к 10000000 стремиться, так с оператором % оно как-то лучше получилось...
 
Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru