Dart에서 난수를 어떻게 생성합니까?
Dart를 사용하여 어떻게 난수를 생성합니까?
사용 Random
클래스 dart:math
:
import 'dart:math';
main() {
var rng = new Random();
for (var i = 0; i < 10; i++) {
print(rng.nextInt(100));
}
}
이 코드는이 작성 시점에 Dart VM 및 dart2js로 테스트되었습니다.
암호화 된 보안 난수 가 필요 하고 (예 : 암호화 용) 브라우저를 사용하는 경우 DOM 암호화 API를 사용할 수 있습니다 .
int random() {
final ary = new Int32Array(1);
window.crypto.getRandomValues(ary);
return ary[0];
}
이는 Dartium, Chrome 및 Firefox에서 작동하지만 실험용 API이므로 다른 브라우저에서는 작동하지 않을 가능성이 높습니다.
다음은 난수 목록을 생성하는 스 니펫입니다.
import 'dart:math';
main() {
var rng = new Random();
var l = new List.generate(12, (_) => rng.nextInt(100));
}
그러면 0에서 99 (포함)까지의 12 개 정수 목록이 생성됩니다.
보안 임의 API가 방금 추가되었습니다. dart:math
new Random.secure()
dart:math
Random
secure
생성 된 모든 임의 값에 대해 임 베더가 제공 한 엔트로피 소스에서 읽는 암호화 보안 임의 생성기를 반환 하는 생성자를 추가했습니다 .
window.crypto.getRandomValues()
브라우저와 OS ( urandom
서버에서 와 같이) 에 위임
대체 솔루션은 다음 코드 DRandom을 사용할 수 있습니다 . 이 클래스는 시드와 함께 사용해야합니다. .NET에서 기대할 수있는 친숙한 인터페이스를 제공하며 mono의 Random.cs에서 포팅되었습니다. 이 코드는 암호화 안전하지 않을 수 있으며 통계적으로 테스트되지 않았습니다.
일반 난수 를 생성하기 위해이 작은 클래스를 작성했습니다 . 내가해야하는 검사를위한 적절한 시작점이었습니다. (이 세트는 "종"모양의 곡선에 배포됩니다.) 시드는 무작위로 설정되지만 세트를 다시 생성하려면 특정 시드를 전달하면 동일한 세트가 생성됩니다.
재미있게 ...
class RandomNormal {
num _min, _max, _sum;
int _nEle, _seed, _hLim;
Random _random;
List _rNAr;
//getter
List get randomNumberAr => _rNAr;
num _randomN() {
int r0 = _random.nextInt(_hLim);
int r1 = _random.nextInt(_hLim);
int r2 = _random.nextInt(_hLim);
int r3 = _random.nextInt(_hLim);
num rslt = _min + (r0 + r1 + r2 + r3) / 4000.0; //Add the OS back in...
_sum += rslt; //#DEBUG ONLY
return( rslt );
}
RandomNormal(this._nEle, this._min, this._max, [this._seed = null]) {
if (_seed == null ) {
Random r = new Random();
_seed = r.nextInt(1000);
}
_hLim = (_max - _min).ceil() * 1000;
_random = new Random(_seed);
_rNAr = [];
_sum = 0;//#DEBUG ONLY
h2("RandomNormal with k: ${_nEle}, Seed: ${_seed}, Min: ${_min}, Max: ${_max}");//#DEBUG ONLY
for(int n = 0; n < _nEle; n++ ){
num randomN = _randomN();
//p("randomN = ${randomN}");
LIST_add( _rNAr, randomN );
}
h3("Mean = ${_sum/_nEle}");//#DEBUG ONLY
}
}
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
그런 다음 이렇게 사용하여 하한과 상한 사이에 생성 된 1000 개의 숫자 집합의 평균을 확인할 수 있습니다. 값은 인스턴스화 후 액세스 할 수 있도록 클래스에 저장됩니다.
_swarmii
이 라이브러리를 사용 하십시오. http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart 는 곧 sdk에 포함될 것이라고 생각하는 좋은 임의 생성기를 제공했습니다.
참고URL : https://stackoverflow.com/questions/11674820/how-do-i-generate-random-numbers-in-dart
'program story' 카테고리의 다른 글
문자열의 최소 및 최대 길이를 확인하지만 공백 일 수 있음 (0) | 2020.10.20 |
---|---|
String이 있는데 왜 StringBuilder인가? (0) | 2020.10.20 |
단일 파이프 '|'를 사용하여 무엇을합니까? (0) | 2020.10.19 |
matplotlib에서 두 개의 수직선 사이를 채우십시오. (0) | 2020.10.19 |
오류 : 불행히도 하나의 프로젝트에 비 Gradle Java 모듈 및> Android-Gradle 모듈을 가질 수 없습니다. (0) | 2020.10.19 |