Генерация случайного числа в определенном диапазоне в MATLAB

38

Как я могу создать случайное число в MATLAB между 13 и 20?

Теги:
numbers
integer
random

8 ответов

51

Если вы ищете равномерно распределенные псевдослучайные целые числа, используйте:

randi([13, 20])
  • 0
    не может n = 13 + (rand (1) * 7) дать равномерно распределенные псевдослучайные целые числа?
  • 2
    @ user581544: нет, если вы не обзвоните (n).
Показать ещё 3 комментария
8
6
r = 13 + 7.*rand(100,1);

Где 100,1 - размер искомого вектора

1

ocw.mit.edu - отличный ресурс, который мне помог. randi - лучший вариант, но если вы вновете интересный номер, попробуйте использовать функцию floor с rand, чтобы получить то, что вы хотите.

Я нарисовал цифровую строку и придумал

floor(rand*8) + 13
0

если вы хотите сгенерировать все число в определенном порядке в случайном порядке, тогда вы можете попробовать `r = randi ([a b], 1, d)

a = начальная точка b = конечная точка d = сколько числа вы хотите сгенерировать, но имейте в виду, что d должно быть меньше или равно b-a

0

Создать значения из равномерного распределения на      интервал [a, b].

      r = a + (b-a).*rand(100,1);
0

Вы также можете использовать:

round(mod(rand.*max,max-1))+min
  • 1
    Не находится в диапазоне [min, max], а также неравномерно распределен, что подразумевается под вопросом.
  • 0
    Модуль вообще трудно предсказать и трудно использовать для генерации случайных чисел. В общем, легко оказаться неслучайным. Лучше просто использовать rand
Показать ещё 5 комментариев
0

если вам нужно плавающее случайное число между 13 и 20

(20-13).*rand(1) + 13

если вам нужно целое случайное число от 13 до 20

floor((20-13).*rand(1) + 13)
  • 0
    Это исключает 20.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню