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
Can a wizard cast a spell during their first turn of combat if they initiated combat by releasing a readied spell?
Bash - pair each line of file
Is there a term for accumulated dirt on the outside of your hands and feet?
What is the relationship between relativity and the Doppler effect?
Deletion of copy-ctor & copy-assignment - public, private or protected?
Do I need to be arrogant to get ahead?
Describing a chess game in a novel
What are substitutions for coconut in curry?
What does Deadpool mean by "left the house in that shirt"?
Usage and meaning of "up" in "...worth at least a thousand pounds up in London"
World War I as a war of liberals against authoritarians?
How can I wire 7 outdoor posts correctly?
Do US professors/group leaders only get a salary, but no group budget?
How could an airship be repaired midflight?
Have the tides ever turned twice on any open problem?
Differential and Linear trail propagation in Noekeon
Knife as defense against stray dogs
Writing in a Christian voice
What favor did Moody owe Dumbledore?
Is it insecure to send a password in a `curl` command?
Unfrosted light bulb
Can other pieces capture a threatening piece and prevent a checkmate?
Wrapping homogeneous Python objects
What if (if any) the reason to buy in small local stores?
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 10 hours ago
J. M. is slightly pensive♦
98k10305464
98k10305464
asked 11 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♦
9 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
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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 10 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♦
9 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
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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♦
9 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
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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 9 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♦
9 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
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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♦
9 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
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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♦
9 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♦
9 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
8 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
8 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♦
8 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♦
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 hours ago
$begingroup$
Yes! Very much agreed. Even more efficient!
$endgroup$
– mjw
8 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 10 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 4 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 4 hours ago
answered 10 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