Bạn đang xem : số ngẫu nhiên trong javascript từ 1 đến 1000

Math.random () nhanh và phù hợp cho nhiều mục đích, nhưng sẽ không phù hợp nếu bạn cần các giá trị được bảo mật bằng mật mã (nó không an toàn) hoặc nếu bạn cần các số nguyên từ một phân phối không chệch hoàn toàn đồng nhất (phương pháp nhân được sử dụng trong các câu trả lời khác tạo ra các giá trị nhất định thường xuyên hơn một chút so với các giá trị khác).

Trong những trường hợp như vậy, chúng tôi có thể sử dụng crypto.getRandomValues ​​() để tạo số nguyên an toàn và từ chối bất kỳ giá trị nào được tạo mà chúng tôi không thể ánh xạ đồng nhất vào phạm vi mục tiêu. Điều này sẽ chậm hơn, nhưng nó sẽ không đáng kể trừ khi bạn đang tạo ra một số lượng cực lớn các giá trị.

Để làm rõ mối quan tâm về phân phối chệch, hãy xem xét trường hợp chúng tôi muốn tạo giá trị từ 1 đến 5, nhưng chúng tôi có bộ tạo số ngẫu nhiên tạo ra các giá trị từ 1 đến 16 (giá trị 4 bit). Chúng ta muốn có cùng một số lượng giá trị được tạo ánh xạ tới từng giá trị đầu ra, nhưng 16 không chia đều cho 5: nó để lại phần dư là 1. Vì vậy, chúng ta cần loại bỏ 1 trong các giá trị có thể được tạo và chỉ tiếp tục khi chúng ta nhận được một trong 15 giá trị nhỏ hơn có thể được ánh xạ đồng nhất vào phạm vi mục tiêu của chúng tôi. Hành vi của chúng tôi có thể trông giống như mã giả này:

  Tạo số nguyên 4 bit trong phạm vi 1-16.
Nếu chúng ta tạo 1, 6 hoặc 11 thì kết quả là 1.
Nếu chúng tôi tạo ra 2, 7 hoặc 12 thì kết quả là 2.
Nếu chúng tôi tạo 3, 8 hoặc 13 thì xuất 3.
Nếu chúng tôi tạo 4, 9 hoặc 14 thì đầu ra 4.
Nếu chúng tôi tạo 5, 10 hoặc 15 thì kết quả là 5.
Nếu chúng tôi đã tạo 16 thì hãy từ chối nó và thử lại.
 

Đoạn mã sau sử dụng logic tương tự, nhưng thay vào đó tạo số nguyên 32 bit, vì đó là kích thước số nguyên chung lớn nhất có thể được biểu thị bằng loại number chuẩn của JavaScript. (Điều này có thể được sửa đổi để sử dụng BigInt s nếu bạn cần phạm vi lớn hơn.) Bất kể phạm vi đã chọn là gì, phần giá trị được tạo bị từ chối sẽ luôn nhỏ hơn 0,5, do đó, số lượng dự kiến ​​là từ chối sẽ luôn nhỏ hơn 1,0 và thường gần bằng 0,0; bạn không cần phải lo lắng về việc nó lặp lại mãi mãi.

Xem Thêm  Giải thích độ dài mảng JavaScript - kích thước của mảng tính bằng js

  const randomInteger = (min, max) = & gt; {
  const range = max - min;
  const maxGeneratedValue = 0xFFFFFFFF;
  const couldResultValues ​​= range + 1;
  const couldGeneratedValues ​​= maxGeneratedValue + 1;
  const còn lại = có thểGeneratedValues% có thểResultValues;
  const maxUnbiased = maxGeneratedValue - phần còn lại;

  if (! number.isInteger (min) ||! number.isInteger (max) ||
       tối đa & gt; Số.MAX_SAFE_INTEGER || tối thiểu & lt; Số.MIN_SAFE_INTEGER) {
    ném lỗi mới ('Các đối số phải là số nguyên an toàn.');
  } else if (range & gt; maxGeneratedValue) {
    ném Lỗi mới (`Phạm vi của $ {range} (từ $ {min} đến $ {max}) & gt; $ {maxGeneratedValue} .`);
  } else if (max & lt; min) {
    ném mới Lỗi (`max ($ {max}) phải & gt; = min ($ {min}).`);
  } else if (tối thiểu === tối đa) {
    trả về tối thiểu;
  }

  để tạo ra;
  làm {
    tạo = crypto.getRandomValues ​​(mới Uint32Array (1)) [0];
  } while (được tạo & gt; maxUnbiased);

  trả về tối thiểu + (tạo ra% có thểResultValues);
};

console.log (randomInteger (-8, 8)); // -2
console.log (randomInteger (0, 0)); // 0
console.log (randomInteger (0, 0xFFFFFFFF)); // 944450079
console.log (randomInteger (-1, 0xFFFFFFFF));
// Lỗi: Phạm vi 4294967296 bao gồm -1 đến 4294967295 là & gt; 4294967295.
console.log (new Array (12) .fill (). map (n = & gt; randomInteger (8, 12)));
// [11, 8, 8, 11, 10, 8, 8, 12, 12, 12, 9, 9]  


Xem thêm những thông tin liên quan đến chủ đề số ngẫu nhiên javascript từ 1 đến 1000

Learn JavaScript – Full Course for Beginners

  • Tác giả: freeCodeCamp.org
  • Ngày đăng: 2018-12-10
  • Đánh giá: 4 ⭐ ( 6712 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: This complete 134-part JavaScript tutorial for beginners will teach you everything you need to know to get started with the JavaScript programming language.

    ⭐️Curriculum⭐️
    This is a stand-alone video but it follows the JavaScript curriculum at freecodecamp.org. Access the curriculum here:
    🔗 Basic JavaScript: https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript
    🔗 ES6 JavaScript: https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6

    ⭐️Code⭐️
    This course was created using scrimba.com. Access the course there along with the code:
    🔗 Basic JavaScript: https://scrimba.com/playlist/pny4ghw
    🔗 ES6 JavaScript: https://scrimba.com/playlist/p7v3gCd

    🐦🐦 Follow course creator Beau Carnes on Twitter: https://www.twitter.com/BeauCarnes

    ⭐️Course Contents⭐️
    0:00:00 Introduction
    0:01:24 Running JavaScript
    0:04:23 Comment Your Code
    0:05:56 Declare Variables
    0:06:15 Storing Values with the Assignment Operator
    0:11:31 Initializing Variables with the Assignment Operator
    0:11:58 Uninitialized Variables
    0:12:40 Case Sensitivity in Variables
    0:14:05 Basic Math
    0:15:30 Increment and Decrement
    0:16:22 Decimal Numbers
    0:16:48 Multiply Two Decimals
    0:17:18 Divide Decimals
    0:17:33 Finding a Remainder
    0:18:22 Augmented Math Operations
    0:21:19 Declare String Variables
    0:22:01 Escaping Literal Quotes
    0:23:44 Quoting Strings with Single Quotes
    0:25:18 Escape Sequences
    0:26:46 Plus Operator
    0:27:49 Plus Equals Operator
    0:29:01 Constructing Strings with Variables
    0:30:14 Appending Variables to Strings
    0:31:11 Length of a String
    0:32:01 Bracket Notation
    0:33:27 Understand String Immutability
    0:34:23 Find the Nth Character
    0:36:28 Word Blanks
    0:40:44 Arrays
    0:41:43 Nest Arrays
    0:42:33 Access Array Data
    0:43:34 Modify Array Data
    0:44:48 Access Multi-Dimensional Arrays
    0:46:30 push()
    0:47:29 pop()
    0:48:33 shift()
    0:49:23 unshift()
    0:50:36 Shopping List
    0:51:41 Write Reusable with Functions
    0:53:41 Arguments
    0:55:43 Global Scope
    0:59:31 Local Scope
    1:00:46 Global vs Local Scope in Functions
    1:02:40 Return a Value from a Function
    1:03:55 Undefined Value returned
    1:04:52 Assignment with a Returned Value
    1:05:52 Stand in Line
    1:08:41 Boolean Values
    1:09:24 If Statements
    1:11:51 Equality Operators
    1:19:17 And / Or Operators
    1:21:37 Else Statements
    1:22:27 Else If Statements
    1:23:30 Logical Order in If Else Statements
    1:24:45 Chaining If Else Statements
    1:27:45 Golf Code
    1:32:15 Switch Statements
    1:41:11 Returning Boolean Values from Functions
    1:42:20 Return Early Pattern for Functions
    1:43:38 Counting Cards
    1:49:11 Build Objects
    1:50:46 Dot Notation
    1:51:33 Bracket Notation
    1:52:47 Variables
    1:53:34 Updating Object Properties
    1:54:30 Add New Properties to Object
    1:55:19 Delete Properties from Object
    1:55:54 Objects for Lookups
    1:57:43 Testing Objects for Properties
    1:59:15 Manipulating Complex Objects
    2:01:00 Nested Objects
    2:01:53 Nested Arrays
    2:03:06 Record Collection
    2:10:15 While Loops
    2:11:35 For Loops
    2:13:56 Odd Numbers With a For Loop
    2:15:28 Count Backwards With a For Loop
    2:17:08 Iterate Through an Array with a For Loop
    2:19:43 Nesting For Loops
    2:22:45 Do…While Loops
    2:24:12 Profile Lookup
    2:28:18 Random Fractions and Whole Numbers
    2:31:46 parseInt Function
    2:33:29 Ternary Operator
    2:34:57 Multiple Ternary Operators
    2:36:57 var vs let
    2:41:32 const Keyword
    2:43:40 Mutate an Array Declared with const
    2:44:52 Prevent Object Mutation
    2:47:17 Arrow Functions
    2:53:04 Default Parameters
    2:54:00 Rest Operator
    2:55:31 Spread Operator
    2:57:18 Destructuring Assignment
    3:06:39 Template Literals
    3:10:43 Simple Fields
    3:12:24 Declarative Functions
    3:12:56 class Syntax
    3:15:11 getters and setters
    3:20:25 import and export

    🎥 Want something shorter? Here’s a 63-second JavaScript course: https://www.youtube.com/watch?v=OXiyLaNo3NE

Tạo số và chuỗi ngẫu nhiên trong Java

  • Tác giả: gpcoder.com
  • Đánh giá: 5 ⭐ ( 5751 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.

Chọn số ngẫu nhiên – Ngẫu Nhiên

  • Tác giả: ngaunhien.vn
  • Đánh giá: 3 ⭐ ( 2130 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Math.random của JavaScript ngẫu nhiên như thế nào?

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 7529 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Cho các số từ 1 đến 100. 9 có 1 chữ số (1-9) 90 có 2…

Vòng quay random số – Vòng quay số ngẫu nhiên 2022

  • Tác giả: dichthuatphuongdong.com
  • Đánh giá: 5 ⭐ ( 9556 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tự tạo vòng quay số ngẫu nhiên, vòng quay random số, random wheel number online, number picker wheel, pick random mumber.

Bài 5: Vòng lặp trong Javascript

  • Tác giả: phambinh.net
  • Đánh giá: 5 ⭐ ( 9270 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách tạo một số ngẫu nhiên sử dụng JavaScript

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 3 ⭐ ( 2856 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Làm thế nào để tạo ra một số ngẫu nhiên nằm trong một khoảng cho trước trong JavaScript tương tự như hàm rand() trong PHP?

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Biến toàn cục trong Python với các ví dụ [Đã cập nhật] - python tạo biến toàn cục

By ads_php