Feature request: Array.prototype.random

Isiah Meadows isiahmeadows at gmail.com
Tue Jun 20 09:33:59 UTC 2017


Better idea: let's introduce an integer-based `Math.random` equivalent
that can be optionally constrained to a specific range.


```js
// Simple polyfill
Math.randomInt = Math.randomInt || function (start, end) {
    if (arguments.length === 0) {
        start = 0; end = Number.MAX_SAFE_INTEGER
    } else if (arguments.length === 1) {
        end = start; start = 0
    }
    start = Math.max(Math.floor(start), -Number.MAX_SAFE_INTEGER)
    end = Math.min(Math.floor(end), Number.MAX_SAFE_INTEGER)

    return Math.floor(Math.random() * (end - start)) + start
}
```

You could then use it like this:
`array[Math.randomInt(array.length)]`. I feel in this particular case,
a more general solution is much more useful than just a "pick some
random item in an array". (Number guessing games, anyone?)
-----

Isiah Meadows
me at isiahmeadows.com


On Thu, Jun 15, 2017 at 6:20 PM, William White <w.white9 at icloud.com> wrote:
> And prng.pick(str), prng.pick(set) etc.?
>
> On 15 Jun 2017, at 22:34, Michał Wadas <michalwadas at gmail.com> wrote:
>
> I believe it's too specialized to be a part of Array interface.
>
> Though, I think JS should have better support for randomness, so we could
> do:
>
> prng.pick(arr);
> prng.sample(arr, 5);
> prng.sampleWithoutRepetitions(arr, 4);
>
> On 15 Jun 2017 20:42, "Will White" <w.white9 at icloud.com> wrote:
>
> Dear es-discuss,
>
> I would like to propose Array.prototype.random, which would return a random
> array element the same way `array[Math.floor(Math.random() * array.length)]`
> does, because every time I want a random array element, I have to remember
> how to do it. Do you think this is a useful addition to the language?
>
> Will White
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>


More information about the es-discuss mailing list