Devo creare un valore -1 o 1 casuale per moltiplicare un numero già esistente di. Il problema è che la mia funzione casuale corrente genera un -1, 0 o 1. Qual è il modo più efficace per farlo?Numero casuale positivo o negativo JavaScript
risposta
Non utilizzare la funzione esistente: è sufficiente chiamare il numero Math.random()
. Se < 0.5 quindi -1, altrimenti 1:
var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
Solo per il gusto di farlo:
var plusOrMinus = [-1,1][Math.random()*2|0];
o
var plusOrMinus = Math.random()*2|0 || -1;
ma utilizzare ciò che si pensa sarà mantenibile.
Da un lato, dovrei dire che c'è qualcosa da dire per la leggibilità. D'altra parte, complimenti per la rasatura di 3 caratteri fuori dalla mia risposta (anche se potrei obiettare che tutti e 3 i caratteri sono spazi bianchi non necessari). Il mio è più corto di 1 carattere se si elimina anche '0' da' 0.5'. :-) – ziesemer
Sì, solo per divertimento. :-) – RobG
questo è un pezzo di codice! – egidiocs
Sono sempre stato un fan di
Math.round(Math.random()) * 2 - 1
quanto appena sorta di senso.
Math.round(Math.random())
vi darà 0 o 1moltiplicando il risultato per 2 vi darà 0 o 2
E poi sottraendo 1 ti dà -1 o 1.
Intuitivo!
Ci sono molti modi per farlo, come mostrano le risposte precedenti.
Il più veloce essere combinazione di Math.round() e Math.random:
// random_sign = -1 + 2 x (0 or 1);
random_sign = -1 + Math.round(Math.random()) * 2;
È inoltre possibile utilizzare Math.cos() (which is also fast):
// cos(0) = 1
// cos(PI) = -1
// random_sign = cos(PI x (0 or 1));
random_sign = Math.cos(Math.PI * Math.round(Math.random()));
Perché non si tenta :
(Math.random() - 0.5) * 2
50% di possibilità di avere un valore negativo con l'ulteriore vantaggio di avere ancora un numero casuale generato.
O se realmente bisogno di un -1/1:
Math.ceil((Math.random() - 0.5) * 2) < 1 ? -1 : 1;
- 1. Convertire un numero negativo in uno positivo in JavaScript
- 2. Ruby: modifica il numero negativo in numero positivo?
- 3. Converti numero negativo in numero positivo in template django?
- 4. numero Parse con prefisso positivo/negativo stringa java
- 5. numero casuale Javascript?
- 6. Come si converte un numero positivo in negativo?
- 7. Convertire un numero positivo a negativo in C#
- 8. come cambiare un numero positivo in negativo e viceversa?
- 9. Cambia colore del testo in base al numero intero positivo o negativo
- 10. JavaScript - Rilevamento della differenza tra zero positivo e zero negativo
- 11. jQuery .submit() trigger di esito positivo o negativo
- 12. Recupera un angolo positivo o negativo da 3 punti
- 13. Controllare se un numero è positivo o negativo utilizzando operatori bit a bit
- 14. Come posso verificare se un numero è positivo o negativo in C#?
- 15. Numero casuale: 0 o 1
- 16. positivo convalida numero in jQuery
- 17. Funzione matematica Java per convertire da positivo int a negativo e negativo a positivo?
- 18. Come generare un valore casuale negativo in python
- 19. Positivo/lookahead negativo con grep e perl
- 20. Regex - Combinazione di look positivo e negativo
- 21. aggiornamento positivo al valore negativo in mysql
- 22. Numero intero casuale Javascript tra due numeri
- 23. Intervallo di tipo di input HTML5 da positivo a negativo
- 24. Cosa significano "positivo" e "negativo" in ECMAScript? +0 e -0
- 25. Int32.TryParse() restituisce zero in caso di errore - esito positivo o negativo?
- 26. Significato di bit a bit e (&) di un numero positivo e negativo?
- 27. positivo/negativo valori di latitudine e longitudine vs. Cardinal Indicazioni
- 28. Modifica bulk elemento Mat: negativo a 0, positivo a 1
- 29. Git: rimuovere il comando positivo/negativo dalle linee in diff
- 30. Tracciamento dell'istogramma cumulativo con lato negativo e positivo in ggplot?
funziona perfettamente, divertente non ho potuto trovare una risposta ovunque online. –
Bella soluzione elegante, grazie –