How to set upper and lower limit of random number

67 Ansichten (letzte 30 Tage)
Stephen john
Stephen john am 16 Mär. 2022
Kommentiert: Walter Roberson am 17 Mär. 2022
Hello everyone, I hope you are doing well. i have the following code. it generate a random number
I want to set the upper limit and lower limit for the values and generate a pattern.
for example i have value 350, then the lower limit will be 300 and upper limit will be 350, or any variable which define the upper and lower limit of the dataset., I have tried the following method but it does not work
levels=round(rand*498)+2;
Dataset=round(rand(1,1000)*(levels*1.1))+round(levels*0.5);
scatter(1:length(Dataset),Dataset)

Antworten (2)

Voss
Voss am 16 Mär. 2022
lower_limit = 300; % to use your example values
upper_limit = 350;
% generate a uniformly distributed random *number* between lower_limit and
% upper_limit:
X = rand()*(upper_limit-lower_limit)+lower_limit
% generate a uniformly distributed pseudorandom *integer* between lower_limit
% and upper_limit:
X = randi(upper_limit-lower_limit+1)+lower_limit-1
  10 Kommentare
Stephen john
Stephen john am 17 Mär. 2022
@Walter Roberson not working getting error
Walter Roberson
Walter Roberson am 17 Mär. 2022
control = randi([2 1000], 1, 1000);
filtered = nan(size(control));
idx = find(control == 300);
if ~isempty(idx)
%talking about what happens when 300 is first found, is only meaningful
%if 300 was found at all
filtered(idx(1)) = randi([250 300], 1, 1); %250 to 300 the first time
idx = idx(2:end); %remaining locations
end
sometimes = rand(size(idx)) <= .3; %sometimes means a 30% chance, right?
filtered(idx(sometimes)) = randi([250 350], 1, nnz(sometimes));
idx = find(control == 500);
sometimes = rand(size(idx)) <= 0.64; %sometimes means a 64% chance, right?
filtered(idx(sometimes)) = randi([450 550], 1, nnz(sometimes));
%now verify
idx = find(~isnan(filtered))
idx = 1×3
301 707 877
control(idx)
ans = 1×3
500 300 500
filtered(idx)
ans = 1×3
545 294 507

Melden Sie sich an, um zu kommentieren.


David Hill
David Hill am 16 Mär. 2022
dataSet=50*rand(1,1000)+300;
  8 Kommentare
Stephen john
Stephen john am 17 Mär. 2022
@David Hill the numbers are generated between 1-1000, then the upper and lower limit of the numbers depend on the span.
David Hill
David Hill am 17 Mär. 2022
r=998*rand(1,1000)+2;
span=100;
for k=1:1000
R(k,:)=span*rand(1,50)+r(k)-50;%each row is 50 samples within the +-50 of each element in r
end

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by