How to generate binary array whose elements with values 1 are randomly drawnMatrix and random, weighted assignment of rowsDevising a sparse array ruleAdding two SparseArrays produces zeros in the reported “NonzeroValues”Random Matrix with criteriaHow to find position of non-zero elements in SparseArray without converting to a dense objectGenerating a random network adjacency matrix via an arbitrary average degreeProblems with RandomChoiceGenerating invertible matrix with lines within a given setMatrix expansion and reorganisationmatrix with chosen elements distributed in a random position
Relation between independence and correlation of uniform random variables
If "dar" means "to give", what does "daros" mean?
Do native speakers use "ultima" and "proxima" frequently in spoken English?
Why is indicated airspeed rather than ground speed used during the takeoff roll?
gerund and noun applications
Usage and meaning of "up" in "...worth at least a thousand pounds up in London"
Maths symbols and unicode-math input inside siunitx commands
What exactly term 'companion plants' means?
Is there a hypothetical scenario that would make Earth uninhabitable for humans, but not for (the majority of) other animals?
What should I install to correct "ld: cannot find -lgbm and -linput" so that I can compile a Rust program?
Knife as defense against stray dogs
What does "Four-F." mean?
Fewest number of steps to reach 200 using special calculator
How do hiring committees for research positions view getting "scooped"?
Variable completely messes up echoed string
Do US professors/group leaders only get a salary, but no group budget?
Why are there no stars visible in cislunar space?
How can an organ that provides biological immortality be unable to regenerate?
World War I as a war of liberals against authoritarians?
Do I need to be arrogant to get ahead?
Can you move over difficult terrain with only 5 feet of movement?
How is the partial sum of a geometric sequence calculated?
How does one measure the Fourier components of a signal?
Calculate the frequency of characters in a string
How to generate binary array whose elements with values 1 are randomly drawn
Matrix and random, weighted assignment of rowsDevising a sparse array ruleAdding two SparseArrays produces zeros in the reported “NonzeroValues”Random Matrix with criteriaHow to find position of non-zero elements in SparseArray without converting to a dense objectGenerating a random network adjacency matrix via an arbitrary average degreeProblems with RandomChoiceGenerating invertible matrix with lines within a given setMatrix expansion and reorganisationmatrix with chosen elements distributed in a random position
$begingroup$
I am trying to generate a binary matrix (whose elements are 0 or 1) of dimension 20x20. To do this, I want to supply as input the number of matrix elements that will take value 1. After, I want to draw randomly distinct position of those elements (values 1). I thought of doing this:
n = 20; (*matrix dimension*)
d = 300; (*number of matrix elements that will assume value 1*)
rules = RandomInteger[1, n, d, 2]; (*defines the position of the matrix elements*)
rules2 = Table[rules[[i]] -> 1, i, Length[rules]]; (*applies the list of random positions the value 1*)
s = SparseArray[rules2] (*creates the binary random matrix*)
However, this method is not efficient because it does not create 300 different random positions (some are repeated). For example, the result appears 212 filled matrix elements (many of the positions contains summed values).
SparseArray[<212>,20,20]
I would like to know if anyone could help me solve this problem of generating 300 numbers 1 in random positions in a 20x20 dimension matrix.
Thanks in advance
matrix random sparse-arrays
$endgroup$
add a comment |
$begingroup$
I am trying to generate a binary matrix (whose elements are 0 or 1) of dimension 20x20. To do this, I want to supply as input the number of matrix elements that will take value 1. After, I want to draw randomly distinct position of those elements (values 1). I thought of doing this:
n = 20; (*matrix dimension*)
d = 300; (*number of matrix elements that will assume value 1*)
rules = RandomInteger[1, n, d, 2]; (*defines the position of the matrix elements*)
rules2 = Table[rules[[i]] -> 1, i, Length[rules]]; (*applies the list of random positions the value 1*)
s = SparseArray[rules2] (*creates the binary random matrix*)
However, this method is not efficient because it does not create 300 different random positions (some are repeated). For example, the result appears 212 filled matrix elements (many of the positions contains summed values).
SparseArray[<212>,20,20]
I would like to know if anyone could help me solve this problem of generating 300 numbers 1 in random positions in a 20x20 dimension matrix.
Thanks in advance
matrix random sparse-arrays
$endgroup$
add a comment |
$begingroup$
I am trying to generate a binary matrix (whose elements are 0 or 1) of dimension 20x20. To do this, I want to supply as input the number of matrix elements that will take value 1. After, I want to draw randomly distinct position of those elements (values 1). I thought of doing this:
n = 20; (*matrix dimension*)
d = 300; (*number of matrix elements that will assume value 1*)
rules = RandomInteger[1, n, d, 2]; (*defines the position of the matrix elements*)
rules2 = Table[rules[[i]] -> 1, i, Length[rules]]; (*applies the list of random positions the value 1*)
s = SparseArray[rules2] (*creates the binary random matrix*)
However, this method is not efficient because it does not create 300 different random positions (some are repeated). For example, the result appears 212 filled matrix elements (many of the positions contains summed values).
SparseArray[<212>,20,20]
I would like to know if anyone could help me solve this problem of generating 300 numbers 1 in random positions in a 20x20 dimension matrix.
Thanks in advance
matrix random sparse-arrays
$endgroup$
I am trying to generate a binary matrix (whose elements are 0 or 1) of dimension 20x20. To do this, I want to supply as input the number of matrix elements that will take value 1. After, I want to draw randomly distinct position of those elements (values 1). I thought of doing this:
n = 20; (*matrix dimension*)
d = 300; (*number of matrix elements that will assume value 1*)
rules = RandomInteger[1, n, d, 2]; (*defines the position of the matrix elements*)
rules2 = Table[rules[[i]] -> 1, i, Length[rules]]; (*applies the list of random positions the value 1*)
s = SparseArray[rules2] (*creates the binary random matrix*)
However, this method is not efficient because it does not create 300 different random positions (some are repeated). For example, the result appears 212 filled matrix elements (many of the positions contains summed values).
SparseArray[<212>,20,20]
I would like to know if anyone could help me solve this problem of generating 300 numbers 1 in random positions in a 20x20 dimension matrix.
Thanks in advance
matrix random sparse-arrays
matrix random sparse-arrays
edited 13 hours ago
J. M. is slightly pensive♦
98k10305464
98k10305464
asked 13 hours ago
SACSAC
1938
1938
add a comment |
add a comment |
5 Answers
5
active
oldest
votes
$begingroup$
This might work:
n = 20;
d = 300;
s = Join[ConstantArray[1, d], ConstantArray[0, n^2 - d]];
a = Partition[RandomSample[s], n]
Total[a, 2]
300
$endgroup$
add a comment |
$begingroup$
r = RandomSample[Range[400], 300];
q = Array[0 &, 400];
q[[r]] = 1;
Q = ArrayReshape[q, 20, 20] // MatrixForm
$endgroup$
$begingroup$
Quite nice. Here's a shorter variation:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar withSparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!
$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
add a comment |
$begingroup$
In a situation where generating all admissible matrix indices can get prohibitive (e.g. the result of Tuples[]
having too many elements), here is an approach that generates just the needed nonzero indices:
(* random k-subset *)
rs[n_, k_] := Take[PermutationList[RandomPermutation[n]], k]
BlockRandom[SeedRandom[1023, Method -> "ExtendedCA"]; (* for reproducibility *)
With[n = 20, p = 300,
Block[k = 1, idl, id,
idl = rs[n, 2];
While[k < p, id = rs[n, 2];
If[! MemberQ[idl, id], k++; AppendTo[idl, id]]];
mat = SparseArray[idl -> 1, n, n]]]];
Check:
Total[mat, 2]
300
$endgroup$
add a comment |
$begingroup$
Here is a variation of JM's comment to mjw's answer that will be much faster when large matrices (e.g., 10^5 by 10^5) are to be created:
randomBinary[dim_, count_] := ArrayReshape[
SparseArray[Thread[RandomSample[1;;dim^2, count]->1], dim^2],
dim, dim
]
The key idea is that one can use Span
(e.g., 1;;max) as the first argument of RandomSample
. For example:
mat = randomBinary[10^5, 300]; //RepeatedTiming
Total[mat, Infinity]
0.000327, Null
300
Of the other answers, only JM's answer will be able to produce a result, and does so about 4 orders of magnitude more slowly.
$endgroup$
add a comment |
$begingroup$
sa = SparseArray[RandomSample[Tuples[Range@20, 2], 300] -> 1, 20, 20]
Total[sa, 2]
300
Alternatively, without Tuples
:
a2 = Unitize @ Threshold[RandomReal[1, 20, 20], "LargestValues", 300]
a3 = Partition[SparseArray[Partition[RandomSample[Range[20^2], 300], 1] -> 1, 20^2], 20]
a4 = SparseArray[(1 + QuotientRemainder[RandomSample[Range[20^2 - 1], 300], 20]) -> 1,
20, 20]
Total[#, 2] & /@ a2, a3, a4
300, 300, 300
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193418%2fhow-to-generate-binary-array-whose-elements-with-values-1-are-randomly-drawn%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
This might work:
n = 20;
d = 300;
s = Join[ConstantArray[1, d], ConstantArray[0, n^2 - d]];
a = Partition[RandomSample[s], n]
Total[a, 2]
300
$endgroup$
add a comment |
$begingroup$
This might work:
n = 20;
d = 300;
s = Join[ConstantArray[1, d], ConstantArray[0, n^2 - d]];
a = Partition[RandomSample[s], n]
Total[a, 2]
300
$endgroup$
add a comment |
$begingroup$
This might work:
n = 20;
d = 300;
s = Join[ConstantArray[1, d], ConstantArray[0, n^2 - d]];
a = Partition[RandomSample[s], n]
Total[a, 2]
300
$endgroup$
This might work:
n = 20;
d = 300;
s = Join[ConstantArray[1, d], ConstantArray[0, n^2 - d]];
a = Partition[RandomSample[s], n]
Total[a, 2]
300
answered 13 hours ago
Henrik SchumacherHenrik Schumacher
56.8k577157
56.8k577157
add a comment |
add a comment |
$begingroup$
r = RandomSample[Range[400], 300];
q = Array[0 &, 400];
q[[r]] = 1;
Q = ArrayReshape[q, 20, 20] // MatrixForm
$endgroup$
$begingroup$
Quite nice. Here's a shorter variation:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar withSparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!
$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
add a comment |
$begingroup$
r = RandomSample[Range[400], 300];
q = Array[0 &, 400];
q[[r]] = 1;
Q = ArrayReshape[q, 20, 20] // MatrixForm
$endgroup$
$begingroup$
Quite nice. Here's a shorter variation:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar withSparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!
$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
add a comment |
$begingroup$
r = RandomSample[Range[400], 300];
q = Array[0 &, 400];
q[[r]] = 1;
Q = ArrayReshape[q, 20, 20] // MatrixForm
$endgroup$
r = RandomSample[Range[400], 300];
q = Array[0 &, 400];
q[[r]] = 1;
Q = ArrayReshape[q, 20, 20] // MatrixForm
answered 11 hours ago
mjwmjw
6909
6909
$begingroup$
Quite nice. Here's a shorter variation:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar withSparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!
$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
add a comment |
$begingroup$
Quite nice. Here's a shorter variation:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar withSparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!
$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
$begingroup$
Quite nice. Here's a shorter variation:
ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
Quite nice. Here's a shorter variation:
ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 300]] -> 1, 400], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
11 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar with
SparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!$endgroup$
– mjw
10 hours ago
$begingroup$
@J. M. Thank you! And I like your version too! Have not been as familiar with
SparseArray[]
as some of the other commands, because I never really use it. But now I see its benefit here. Ironically, most (75%) of the entries are ones!$endgroup$
– mjw
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:
ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Indeed, it's not actually "sparse" in that sense. So, just turn things around a bit:
ArrayReshape[SparseArray[Transpose[RandomSample[Range[400], 100]] -> 0, 400, 1], 20, 20]
$endgroup$
– J. M. is slightly pensive♦
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
10 hours ago
add a comment |
$begingroup$
In a situation where generating all admissible matrix indices can get prohibitive (e.g. the result of Tuples[]
having too many elements), here is an approach that generates just the needed nonzero indices:
(* random k-subset *)
rs[n_, k_] := Take[PermutationList[RandomPermutation[n]], k]
BlockRandom[SeedRandom[1023, Method -> "ExtendedCA"]; (* for reproducibility *)
With[n = 20, p = 300,
Block[k = 1, idl, id,
idl = rs[n, 2];
While[k < p, id = rs[n, 2];
If[! MemberQ[idl, id], k++; AppendTo[idl, id]]];
mat = SparseArray[idl -> 1, n, n]]]];
Check:
Total[mat, 2]
300
$endgroup$
add a comment |
$begingroup$
In a situation where generating all admissible matrix indices can get prohibitive (e.g. the result of Tuples[]
having too many elements), here is an approach that generates just the needed nonzero indices:
(* random k-subset *)
rs[n_, k_] := Take[PermutationList[RandomPermutation[n]], k]
BlockRandom[SeedRandom[1023, Method -> "ExtendedCA"]; (* for reproducibility *)
With[n = 20, p = 300,
Block[k = 1, idl, id,
idl = rs[n, 2];
While[k < p, id = rs[n, 2];
If[! MemberQ[idl, id], k++; AppendTo[idl, id]]];
mat = SparseArray[idl -> 1, n, n]]]];
Check:
Total[mat, 2]
300
$endgroup$
add a comment |
$begingroup$
In a situation where generating all admissible matrix indices can get prohibitive (e.g. the result of Tuples[]
having too many elements), here is an approach that generates just the needed nonzero indices:
(* random k-subset *)
rs[n_, k_] := Take[PermutationList[RandomPermutation[n]], k]
BlockRandom[SeedRandom[1023, Method -> "ExtendedCA"]; (* for reproducibility *)
With[n = 20, p = 300,
Block[k = 1, idl, id,
idl = rs[n, 2];
While[k < p, id = rs[n, 2];
If[! MemberQ[idl, id], k++; AppendTo[idl, id]]];
mat = SparseArray[idl -> 1, n, n]]]];
Check:
Total[mat, 2]
300
$endgroup$
In a situation where generating all admissible matrix indices can get prohibitive (e.g. the result of Tuples[]
having too many elements), here is an approach that generates just the needed nonzero indices:
(* random k-subset *)
rs[n_, k_] := Take[PermutationList[RandomPermutation[n]], k]
BlockRandom[SeedRandom[1023, Method -> "ExtendedCA"]; (* for reproducibility *)
With[n = 20, p = 300,
Block[k = 1, idl, id,
idl = rs[n, 2];
While[k < p, id = rs[n, 2];
If[! MemberQ[idl, id], k++; AppendTo[idl, id]]];
mat = SparseArray[idl -> 1, n, n]]]];
Check:
Total[mat, 2]
300
answered 12 hours ago
J. M. is slightly pensive♦J. M. is slightly pensive
98k10305464
98k10305464
add a comment |
add a comment |
$begingroup$
Here is a variation of JM's comment to mjw's answer that will be much faster when large matrices (e.g., 10^5 by 10^5) are to be created:
randomBinary[dim_, count_] := ArrayReshape[
SparseArray[Thread[RandomSample[1;;dim^2, count]->1], dim^2],
dim, dim
]
The key idea is that one can use Span
(e.g., 1;;max) as the first argument of RandomSample
. For example:
mat = randomBinary[10^5, 300]; //RepeatedTiming
Total[mat, Infinity]
0.000327, Null
300
Of the other answers, only JM's answer will be able to produce a result, and does so about 4 orders of magnitude more slowly.
$endgroup$
add a comment |
$begingroup$
Here is a variation of JM's comment to mjw's answer that will be much faster when large matrices (e.g., 10^5 by 10^5) are to be created:
randomBinary[dim_, count_] := ArrayReshape[
SparseArray[Thread[RandomSample[1;;dim^2, count]->1], dim^2],
dim, dim
]
The key idea is that one can use Span
(e.g., 1;;max) as the first argument of RandomSample
. For example:
mat = randomBinary[10^5, 300]; //RepeatedTiming
Total[mat, Infinity]
0.000327, Null
300
Of the other answers, only JM's answer will be able to produce a result, and does so about 4 orders of magnitude more slowly.
$endgroup$
add a comment |
$begingroup$
Here is a variation of JM's comment to mjw's answer that will be much faster when large matrices (e.g., 10^5 by 10^5) are to be created:
randomBinary[dim_, count_] := ArrayReshape[
SparseArray[Thread[RandomSample[1;;dim^2, count]->1], dim^2],
dim, dim
]
The key idea is that one can use Span
(e.g., 1;;max) as the first argument of RandomSample
. For example:
mat = randomBinary[10^5, 300]; //RepeatedTiming
Total[mat, Infinity]
0.000327, Null
300
Of the other answers, only JM's answer will be able to produce a result, and does so about 4 orders of magnitude more slowly.
$endgroup$
Here is a variation of JM's comment to mjw's answer that will be much faster when large matrices (e.g., 10^5 by 10^5) are to be created:
randomBinary[dim_, count_] := ArrayReshape[
SparseArray[Thread[RandomSample[1;;dim^2, count]->1], dim^2],
dim, dim
]
The key idea is that one can use Span
(e.g., 1;;max) as the first argument of RandomSample
. For example:
mat = randomBinary[10^5, 300]; //RepeatedTiming
Total[mat, Infinity]
0.000327, Null
300
Of the other answers, only JM's answer will be able to produce a result, and does so about 4 orders of magnitude more slowly.
answered 6 hours ago
Carl WollCarl Woll
70.6k394184
70.6k394184
add a comment |
add a comment |
$begingroup$
sa = SparseArray[RandomSample[Tuples[Range@20, 2], 300] -> 1, 20, 20]
Total[sa, 2]
300
Alternatively, without Tuples
:
a2 = Unitize @ Threshold[RandomReal[1, 20, 20], "LargestValues", 300]
a3 = Partition[SparseArray[Partition[RandomSample[Range[20^2], 300], 1] -> 1, 20^2], 20]
a4 = SparseArray[(1 + QuotientRemainder[RandomSample[Range[20^2 - 1], 300], 20]) -> 1,
20, 20]
Total[#, 2] & /@ a2, a3, a4
300, 300, 300
$endgroup$
add a comment |
$begingroup$
sa = SparseArray[RandomSample[Tuples[Range@20, 2], 300] -> 1, 20, 20]
Total[sa, 2]
300
Alternatively, without Tuples
:
a2 = Unitize @ Threshold[RandomReal[1, 20, 20], "LargestValues", 300]
a3 = Partition[SparseArray[Partition[RandomSample[Range[20^2], 300], 1] -> 1, 20^2], 20]
a4 = SparseArray[(1 + QuotientRemainder[RandomSample[Range[20^2 - 1], 300], 20]) -> 1,
20, 20]
Total[#, 2] & /@ a2, a3, a4
300, 300, 300
$endgroup$
add a comment |
$begingroup$
sa = SparseArray[RandomSample[Tuples[Range@20, 2], 300] -> 1, 20, 20]
Total[sa, 2]
300
Alternatively, without Tuples
:
a2 = Unitize @ Threshold[RandomReal[1, 20, 20], "LargestValues", 300]
a3 = Partition[SparseArray[Partition[RandomSample[Range[20^2], 300], 1] -> 1, 20^2], 20]
a4 = SparseArray[(1 + QuotientRemainder[RandomSample[Range[20^2 - 1], 300], 20]) -> 1,
20, 20]
Total[#, 2] & /@ a2, a3, a4
300, 300, 300
$endgroup$
sa = SparseArray[RandomSample[Tuples[Range@20, 2], 300] -> 1, 20, 20]
Total[sa, 2]
300
Alternatively, without Tuples
:
a2 = Unitize @ Threshold[RandomReal[1, 20, 20], "LargestValues", 300]
a3 = Partition[SparseArray[Partition[RandomSample[Range[20^2], 300], 1] -> 1, 20^2], 20]
a4 = SparseArray[(1 + QuotientRemainder[RandomSample[Range[20^2 - 1], 300], 20]) -> 1,
20, 20]
Total[#, 2] & /@ a2, a3, a4
300, 300, 300
edited 6 hours ago
answered 13 hours ago
kglrkglr
189k10206424
189k10206424
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193418%2fhow-to-generate-binary-array-whose-elements-with-values-1-are-randomly-drawn%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown