Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Контроль ШД для стеклоочистителя на базе МК Attiny2313 http://www.cyberforum.ru/avr/thread1305222.html
Здравствуйте, знатоки. Подскажите пожалуйста. Необходимо организовать подобие автомобильных стеклоочистителей на базе МК Attiny2313. У меня есть такая мысля задействовать шаговый двигатель. При этом...
Atmega AVR микроконтроллер Управление светодиодами на ATtiny2313 Ребята, помогите. Нужно написать программу под ATtiny 2313, где при нажатии кнопки 1 горит Led PB2 при нажатии кнопки 2 горит Led PB2, но медленнеи при нажатии кнопки 3 горит Led PB3 при... http://www.cyberforum.ru/avr/thread1304199.html
Atmega AVR микроконтроллер Вычисление логической функции в МК AT90S2313
В ячейке SRAM з ADR1 (C4) расположен код (3F). Записать в кодах МК AT90S2313 програму, которая выполняет вычисление заданой логической функции F над этими кодами. Результат вычисления должен быть...
Atmega AVR микроконтроллер Проверка емкости конденсатора на ATtiny2313
Нужна помощь. Используемый софт: AVR Studio 6, Proteus 7.8 Задача: Нужно написать программку, которая, собственно, проверяла емкость конденсатора, а я понятие не имею, как выполнить данную задачу....
Atmega AVR микроконтроллер Подключение кнопки к порту http://www.cyberforum.ru/avr/thread1301733.html
Есть физический переключатель (1 положение - замкнуто 2 проводка, 2- разомкнуто). Подключаю один провод из этого переключателя к питанию VCC, второй провод подключаю к порту B1. Вот код: int...
Atmega AVR микроконтроллер Не могу найти ошибку в коде реализации протокола обмена Помогите пожалуйста, не могу найти ошибку в коде. include <avr/io. h> // Подключение заголовочного файла, который позволяет объявлять булевские переменные #include <stdbool. h> // Определение... подробнее
Fangod
8 / 8 / 0
Регистрация: 07.10.2011
Сообщений: 164
20.11.2014, 19:13  [ТС] 0

Генерация случайных чисел

20.11.2014, 19:13. Просмотров 2981. Ответов 9
Метки (Все метки)

Ответ

Стандартная функция выдает одну и туже последовательность
Счетчик может быть и работает с определенным периодом, но вот событие при котором происходит надобность в рандоме абсолютна случайная (робот натолкнулся на препятствие), и предсказать значение счетчика невозможно

Нашел то, что нужно, но не работает, проверил сначала на JS, потом на шарпе, зацикливает на 0.8183099494386802


Javascript
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
// Константы, предложеные Lewis, Goodman и Miller 
var IA = 16807;
var IM = 2147483647;
var AM = 1.0 / IM;
/* Константы предложеные Scharge */
var IQ = 12773;
var IR = 2836;
// Специальная маска
var MASK = 123456789;
 
// Установка начального зерна
var dummy = 345335;
function Seed(dum) {
  dummy = dum;
}
// Возвращает распределеные числа от 0 до 1 
function unirand0(){
  var k;
  var ans;
  dummy ^= MASK;
  k = dummy / IQ;
  if((dummy = IA * (dummy - k * IQ) - IR * k) < 0 ){ 
    dummy += IM;
  }
  ans = AM * dummy;
  dummy ^= MASK;
  return ans;
}
 
for(var i = 0; i <= 30; i++){
  console.log(unirand0());
}
Добавлено через 1 час 27 минут
Проверил на c++, тоже самое, зацикливает на 0.8....
Неужели нигде нет решения?

Добавлено через 26 минут
Так, форматнул код, проверил на плюсах, вроде что-то нормальное, потом протестирую
Наверно, кому-нибудь это понадобиться
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
// Константы
#define NTAB 32
#define NWUP 8
#define EPS 1.2e-7
#define RNMX (1.0 - EPS)
#define IM1 2147483563
#define IM2 2147483399
#define AM (1./IM1)
#define IMM1 (IM1-1)
#define IA1 40014
#define IA2 40692
#define IQ1 53668
#define IQ2 52774
#define IR1 12211
#define IR2 3791
#define NDIV (1 + IMM1 / NTAB)
 
// Зерно
static long dummy;
void Seed(long dum) { 
    dummy = dum; 
}
 
float custom_rand(void) {
    int j;
    long k;
    static long dummy2 = 123456789;
    static long iy = 0;
    static long iv[NTAB];
    float temp;
    if(dummy <= 0 || !iy) {
        if(dummy < 0) { 
            dummy = -dummy; 
        } else if(dummy == 0) { 
            dummy = 1;
        }
        dummy2 = dummy;
        for(j = NTAB + NWUP - 1; j >= 0; j--) {
            k = dummy / IQ1;
            if((dummy = IA1 * (dummy - k * IQ1) - IR1*k) < 0) { 
                dummy += IM1;
            }
            if(j < NTAB) { 
                iv[j] = dummy; 
            }
        }
        iy = iv[0];
    }
    k = dummy / IQ1;
    if((dummy = IA1 * (dummy - k * IQ1) - IR1 * k) < 0) { 
        dummy += IM1;
    }
    k = dummy2 / IQ2;
    if((dummy2 = IA2 * (dummy2 - k * IQ2) - IR2 * k) < 0) { 
        dummy2 += IM2;
    }
    iy = iv[j = iy / NDIV] - dummy2; 
    iv[j] = dummy;
    if(iy<1) { 
        iy += IMM1; 
    }
    if((temp = AM*iy)>RNMX) { 
        return RNMX; 
    }
    return temp; 
}
 
 
 
int _tmain(int argc, _TCHAR* argv[]){
    // Ключ, любое число
    Seed(6443567589);
    for(int i = 0; i <= 1000; i++) {
        cout << custom_rand() << endl;
    }
    system("pause");
    return 0;
}


Вернуться к обсуждению:
Генерация случайных чисел
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 19:13
Готовые ответы и решения:

Генератор Псевдо Случайных Чисел на языке СИ
Тема - Генерация псевдослучайных чисел в задаваемом диапазоне Решил написать программу для ГПСЧ...

Assembler Atmega16 Генератор случайных чисел
Мне нужно получить число с помощью таймера T0 CTC OCR0:=255, присвоить его переменной. На чертеже...

Задача такое нужно построить случайных величин и генерация случайных чисел(ГСЧ
Народ помогите тут надо. Задание такое нужно построить случайных величин и генерация случайных...

Генерация случайных чисел с учётом уже имеющихся чисел. (C++ Builder 6)
Здравствуйте. Появилось желание создать программу генерации случайных чисел с учётом уже имеющихся...

Генерация случайных чисел
Здравствуйте, появилась такая проблема: при генерации случайного числа функцией rand(); мне нужно...

9
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru