How to generate random numbers between two numbers without any specific number?

조회 수: 125 (최근 30일)
Arnab Pal
Arnab Pal 2017년 8월 21일
댓글: Walter Roberson 2020년 10월 25일
I want to generate random numbers between 2 and 33. But do not want a(i) number. a(i) can be a single number between 2 to 33.

답변 (4개)

Walter Roberson
Walter Roberson 2019년 3월 25일
valid_choices = setdiff(2:33, a(i));
random_choice = valid_choices(randi(length(valid_choices)));
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 10월 25일
This can be trivially extended to a list of values to avoid,
valid_choices = setdiff(2:33, a);
random_choice = valid_choices(randi(length(valid_choices)));

댓글을 달려면 로그인하십시오.


per isakson
per isakson 2017년 8월 21일
편집: per isakson 2017년 8월 21일
"[...] without any specific number?" I don't understand that. However, try
>> 2 + rand*(33-2)
ans =
26.8087
>> 2 + rand(1,3)*(33-2)
ans =
31.9115 6.8860 32.0884
In response to comment
Try
>> num = one_random_number( 2, 33, [3,4,5,6,7,8] )
num =
24.5963
>> num = one_random_number( 2, 33, 5 )
num =
22.1580
>>
where
function num = one_random_number( lower, upper, exclude )
num = exclude(1);
while any( num == exclude )
num = lower + rand*(upper-lower);
end
end
Add some error checking to the code and be prepared for comments regarding tests for equal on floating point numbers. Did you mean random whole number? If you did, replace
num = lower + rand*(upper-lower);
by
num = randi([lower,upper]);
  댓글 수: 4
per isakson
per isakson 2017년 8월 21일
편집: per isakson 2017년 8월 21일
I've updated the answer

댓글을 달려면 로그인하십시오.


NARAYAN SHARMA
NARAYAN SHARMA 2019년 6월 13일
If you want to generate random real numbers between X1 to X2 except X3 then try the code written below
X1= 0;
X2=100;
X3=10;
total_number=1000;
for i=1:total_number
Random_number=X1+ rand*(X2-X1)
while Random_number==X3
Random_number=X1+ rand*(X2-X1)
end
Real_rand_number(i,1)=Random_number;
end
If you want to generate random integers between X1 to X2 except X3 then try the code written below
X1= 0;
X2=100;
X3=10;
total_number=1000;
for i=1:total_number
Random_number=round(X1+ rand*(X2-X1))
while Random_number==X3
Random_number=round(X1+ rand*(X2-X1))
end
Real_rand_number(i,1)=Random_number;
end

Nardjim Hermann
Nardjim Hermann 2020년 10월 25일
research randi,fix,round,ceil,floor functions
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 10월 25일
These do not in themselves answer the question. The question is not how to generate random integers: the question is how to do so while avoiding certain possibilities.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by