I agree that having a random integer function would be more suitable. Picking a random element from an array is a fairly uncommon thing but generating a random integer in a given range is something much more desirable.
2017-06-20 11:33 GMT+02:00 Isiah Meadows <[email protected]>: > 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 > [email protected] > > > On Thu, Jun 15, 2017 at 6:20 PM, William White <[email protected]> > wrote: > > And prng.pick(str), prng.pick(set) etc.? > > > > On 15 Jun 2017, at 22:34, Michał Wadas <[email protected]> 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" <[email protected]> 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 > > [email protected] > > https://mail.mozilla.org/listinfo/es-discuss > > > > > > > > _______________________________________________ > > es-discuss mailing list > > [email protected] > > https://mail.mozilla.org/listinfo/es-discuss > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

