Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Tôi muốn tạo mỗi số từ 0 đến 4 một cách ngẫu nhiên bằng cách sử dụng JavaScript và mỗi số chỉ có thể xuất hiện một lần. Vì vậy, tôi đã viết mã:

for(var l=0; l<5; l++) {
    var randomNumber = Math.floor(Math.random()*5);  
    alert(randomNumber)
}

Nhưng mã này đang lặp lại các giá trị. Xin vui lòng giúp đỡ.

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

DFSQ

189K25 Huy hiệu vàng232 Huy hiệu bạc252 Huy hiệu Đồng25 gold badges232 silver badges252 bronze badges

Đã hỏi ngày 23 tháng 3 năm 2013 lúc 9:31Mar 23, 2013 at 9:31

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

1

Tạo một loạt các số:

var numbers = [1, 2, 3, 4];

Và sau đó xáo trộn nó:

function shuffle(o) {
    for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
};

var random = shuffle(numbers);

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 9:50Mar 23, 2013 at 9:50

BlenderBlenderBlender

280K52 Huy hiệu vàng427 Huy hiệu bạc487 Huy hiệu đồng52 gold badges427 silver badges487 bronze badges

1

Một cách nữa để làm điều đó:

for (var a = [0, 1, 2, 3, 4], i = a.length; i--; ) {
    var random = a.splice(Math.floor(Math.random() * (i + 1)), 1)[0];
    console.log(random);
}

Không biết liệu thậm chí có thể làm cho nó nhỏ gọn hơn.

Kiểm tra: http://jsfiddle.net/2m3ms/1/

Đây là bản demo nhúng:

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 10:26Mar 23, 2013 at 10:26

DFSQDFSQdfsq

189K25 Huy hiệu vàng232 Huy hiệu bạc252 Huy hiệu Đồng25 gold badges232 silver badges252 bronze badges

1

Đã hỏi ngày 23 tháng 3 năm 2013 lúc 9:31

Tạo một loạt các số:

var elements = [1, 2, 3, 4];
elements.shuffle(); // not a standard Javascript function, needs to be implemented

while( elements.length > 0 ) {
    console.log( elements.pop() );
}

Và sau đó xáo trộn nó:Mar 23, 2013 at 9:52

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 9:50Ingo Bürk

BlenderBlender6 gold badges64 silver badges92 bronze badges

0

function getRanArr(lngth) {
  let arr = [];
  do {
      let ran = Math.floor(Math.random() * lngth); 
      arr = arr.indexOf(ran) > -1 ? arr : arr.concat(ran);
   }while (arr.length < lngth)
   
   return arr;
}

const res = getRanArr(5);

console.log(res);

280K52 Huy hiệu vàng427 Huy hiệu bạc487 Huy hiệu đồngDec 15, 2019 at 20:53

Một cách nữa để làm điều đó:symlink

Không biết liệu thậm chí có thể làm cho nó nhỏ gọn hơn.7 gold badges27 silver badges48 bronze badges

Kiểm tra: http://jsfiddle.net/2m3ms/1/

function generateRan(){
    var max = 20;
    var random = [];
    for(var i = 0;i<max ; i++){
        var temp = Math.floor(Math.random()*max);
        if(random.indexOf(temp) == -1){
            random.push(temp);
        }
        else
         i--;
    }
    console.log(random)
}

generateRan();

Đây là bản demo nhúng:Jul 8, 2015 at 9:50

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 10:26Shouvik

DFSQDFSQ1 gold badge7 silver badges17 bronze badges

Các câu trả lời được đưa ra bởi Adil và Minko có một vấn đề lớn (mặc dù Minko ít nhất đã hạn chế nó với một tập hợp nhỏ): chúng đi qua cùng một số nhiều lần.

var exists = [],
    randomNumber,
    max = 5;
for(var l = 0; l < max; l++) {
   do {
       randomNumber = Math.floor(Math.random() * max);  
   } while (exists[randomNumber]);
   exists[randomNumber] = true;
   alert(randomNumber)
}

Theo nghĩa đó, một phương pháp tốt hơn sẽ là tạo ra mảng chứa các giá trị có thể, xáo trộn nó và sau đó chỉ là các phần tử bật ra khỏi nó. Điều này sẽ đòi hỏi sự phức tạp của việc xáo trộn mảng, nhưng nó sẽ thoát khỏi vấn đề được đề cập ở trên.

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 9:52Mar 23, 2013 at 9:39

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Ingo Bürkingo BürkMinko Gechev

18.4K6 Huy hiệu vàng64 Huy hiệu bạc92 Huy hiệu Đồng8 gold badges59 silver badges67 bronze badges

Đã trả lời ngày 15 tháng 12 năm 2019 lúc 20:53

SymlinkSymLink

11.3k7 Huy hiệu vàng27 Huy hiệu bạc48 Huy hiệu đồngFeb 2, 2016 at 11:26

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Đánh giá cao tất cả sự giúp đỡ của bạn. Nhưng có lẽ một cách khác để tạo số ngẫu nhiên trong một phạm vi tối đa nhất định có thể được thực hiện theo dưới đây.Jijo Paulose

Đã trả lời ngày 8 tháng 7 năm 2015 lúc 9:5017 silver badges20 bronze badges

HTML:

<p id="array_number" style="font-size: 25px; text-align: center;"></p>

JS:

Shouvikshouvik

Theo nghĩa đó, một phương pháp tốt hơn sẽ là tạo ra mảng chứa các giá trị có thể, xáo trộn nó và sau đó chỉ là các phần tử bật ra khỏi nó. Điều này sẽ đòi hỏi sự phức tạp của việc xáo trộn mảng, nhưng nó sẽ thoát khỏi vấn đề được đề cập ở trên.

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 9:52Aug 24, 2020 at 14:27

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

Ingo Bürkingo BürkBlackjack

18.4K6 Huy hiệu vàng64 Huy hiệu bạc92 Huy hiệu Đồng1 gold badge14 silver badges19 bronze badges

Đã trả lời ngày 15 tháng 12 năm 2019 lúc 20:53

var numbers = [1, 2, 3, 4];
1
var numbers = [1, 2, 3, 4];
2

SymlinkSymLinkDec 2, 2019 at 3:08

Hướng dẫn random number without duplicates javascript - số ngẫu nhiên không có bản sao javascript

11.3k7 Huy hiệu vàng27 Huy hiệu bạc48 Huy hiệu đồng

var numbers = [1, 2, 3, 4];
3

Đánh giá cao tất cả sự giúp đỡ của bạn. Nhưng có lẽ một cách khác để tạo số ngẫu nhiên trong một phạm vi tối đa nhất định có thể được thực hiện theo dưới đây.Oct 27, 2020 at 19:19

1

Đã trả lời ngày 8 tháng 7 năm 2015 lúc 9:50

var numbers = [1, 2, 3, 4];
4

ShouvikshouvikAug 20, 2021 at 15:23

4391 Huy hiệu vàng7 Huy hiệu bạc17 Huy hiệu đồngjfunk

Nếu phạm vi của các số ngẫu nhiên không lớn, bạn có thể sử dụng điều này:3 gold badges33 silver badges35 bronze badges

var numbers = [1, 2, 3, 4];
5

THỬ NGHIỆM

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 9:3923 gold badges46 silver badges65 bronze badges

Minko Gechevminko GechevApr 17, 2018 at 10:15

2

Làm thế nào để bạn tạo ra một số ngẫu nhiên mà không cần lặp lại?

Tạo danh sách số ngẫu nhiên không có bản sao trong Excel..
Chọn ô B3 và nhấp vào nó ..
Chèn công thức: = randbetween (10,30).
Nhấn Enter..
Kéo công thức xuống các ô khác trong cột bằng cách nhấp và kéo biểu tượng nhỏ++ở phía dưới bên phải của ô ..

Làm thế nào để bạn tạo ra một số ngẫu nhiên trong JavaScript?

Tạo JavaScript Số ngẫu nhiên JavaScript tạo số giả ngẫu nhiên với hàm Math.random ().Hàm này không có tham số và tạo số thập phân ngẫu nhiên từ 0 đến 1. Giá trị trả về có thể là 0, nhưng nó sẽ không bao giờ là 1.Math. random() . This function takes no parameters and creates a random decimal number between 0 and 1. The returned value may be 0, but it will never be 1.

Làm thế nào để bạn tạo ra một số ngẫu nhiên giữa hai giá trị trong JavaScript?

Bạn có thể chỉ cần sử dụng phương thức math.random () kết hợp với phương thức math.floor () để tạo số ngẫu nhiên giữa hai số trong javascript.use the Math. random() method in combination with the Math. floor() method to generate a random number between two numbers in JavaScript.

JavaScript Math có thực sự ngẫu nhiên không?

Làm thế nào ngẫu nhiên là toán học.ngẫu nhiên()?Có thể chỉ ra rằng số được trả lại bằng toán học.Random () là một số giả ngẫu nhiên vì không máy tính nào có thể tạo ra một số thực sự ngẫu nhiên, thể hiện tính ngẫu nhiên trên tất cả các thang đo và trên tất cả các kích thước của bộ dữ liệu.no computer can generate a truly random number, that exhibits randomness over all scales and over all sizes of data sets.