How can I get randperm function to calculate assigned percentage and values?
1 view (last 30 days)
I need to calculate that out of 1000000 elements, 75% should be randomly assigned a value of 1.5.
‘p = randperm(n)’ to specify which element is assigned with the properties of inclusions, where ‘n’ is the total number of elements (1000000), ‘p’ contains randomly ordered numbers from ‘1’ to ‘n’. Then, I need to assign the first ‘m’ elements with the value (1.5)
Out of 1000000 elements, 75% should be randomly assigned a value of 1.5.
Keshav on 30 Jun 2022
Based on my understanding, you want to generate an array of size n such that random 75% elements value is 1.5.
you can use the below code to do so.
n = 1000000;
p = randperm(n);
array = zeros(n,1);
num = .75*n;
for i = 1:num
array(p(i)) = 1.5;
% if you want you can assign some other value to the remaining elements
%for i = num+1:n
% array(p(i)) = some_other_val
More Answers (1)
Steven Lord on 30 Jun 2022
Let's look at a slightly smaller problem.
A = zeros(10);
numElements = numel(A)
numDesired = ceil(0.25*numElements)
elementsToSet = randperm(numElements, numDesired)
A(elementsToSet) = 1
howManyNonzeroElements = nnz(A) % Should be numDesired
Alternately if you're working with sparse matrices you should look at sprand, sprandn, and sprandsym instead.