我正在尝试在我的反应本机测试项目中使用solana-web3.js获取 Solana 钱包的正确公共地址
import { Keypair} from '@solana/web3.js';
import * as bip39 from 'bip39';
import * as bip32 from 'bip32';
const derivePath = "m/44'/501'/0'/0'";
const mnemonic = "...12 word phrase"
const seed: Buffer = yield bip39.mnemonicToSeed(mnemonic);
// also tried to slice seed.slice(0, 32);
const derivedSeed = bip32.fromSeed(seed).derivePath(derivePath).privateKey;
const keypair = Keypair.fromSeed(derivedSeed);
const publicKey = keypair.publicKey.toString();
Run Code Online (Sandbox Code Playgroud)
我采用了应该用于 Phantom 钱包的派生路径(并且可以在 Solflare 钱包中选择),但问题是 - 我没有获得与这些浏览器钱包相同的公钥。
那么我在上面的代码中可能在哪里犯了错误呢?
更新:当我使用“ed25519-hd-key”lib 而不是“bip32”来获取派生种子时,问题就消失了。
import * as ed25519 from 'ed25519-hd-key';
const derivedSeed = ed25519.derivePath(derivePath, seed.toString('hex')).key;
Run Code Online (Sandbox Code Playgroud) 我想通过使用不同的种子数重置随机序列.运行此测试代码时:
boost::mt19937 gener(1);
boost::normal_distribution<> normal(0,1);
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > rng(gener, normal);
cout << rng() << endl;
cout << rng() << endl;
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
cout << rng() << endl;
gener.seed(1);
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
gener.seed(3);
cout << rng() << endl;
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
# seed(1) via constructor
-2.971829031
1.706951063
-0.430498971
# seed(2)
-2.282022417
-0.5887503675
# seed(1)
0.2504171986
# seed(2)
-0.5887503675
# seed(3)
0.2504171986
Run Code Online (Sandbox Code Playgroud)
显然我做错了.我怎么能克服这个问题?
所以我是C++的新手,我正在尝试学习一些东西.因此,我试图制作一个随机数发生器(如果你愿意,可以使用RNG或PRNG).我有RNG的基本知识,就像你必须从种子开始,然后通过算法发送种子.我坚持的是人们如何提出所述算法.
这是我得到种子的代码.
int getSeed()
{
time_t randSeed;
randSeed = time(NULL);
return randSeed;
}
Run Code Online (Sandbox Code Playgroud)
现在我知道C++中有预先构建的RNG,但我希望学习的不仅仅是复制其他人的工作并尝试解决它.
因此,如果有人能带我到我能阅读的地方或向我展示如何为此提出算法的例子,我将非常感激.
我目前卡在随机发生器中.需求规范显示了这样的示例:
Random rand = new Random(3412);
Run Code Online (Sandbox Code Playgroud)
兰特结果不是直接给出的,而是用于其他表现.
我写了与上面相同的代码,通过种子3412生成随机数.但是,其余性能的结果与样本完全不同.
生成结果是518435373,我使用了在线c#编译器上尝试过的相同代码,但得到的生成结果为11688046,其余的性能结果也与样本不同.
所以我只是想知道在不同的机器上应该是不同的?
顺便说一下,任何人都可以从你的机器上提供结果,看看它是否和我一样.
当我在set.seed(0)和set.seed(1)时在R中发生奇怪的事情;
set.seed(0)
sample(1:100,size=10,replace=TRUE)
#### [1] 90 27 38 58 91 21 90 95 67 63
set.seed(1)
sample(1:100,size=10,replace=TRUE)
#### [1] 27 38 58 91 21 90 95 67 63 7
Run Code Online (Sandbox Code Playgroud)
当将种子从0更改为1时,我得到完全相同的序列,但移过1个单元格!
请注意,如果我执行set.seed(2),我会得到一个看起来完全不同(随机?)的向量.
set.seed(2)
sample(1:100,size=10,replace=TRUE)
#### [1] 19 71 58 17 95 95 13 84 47 55
Run Code Online (Sandbox Code Playgroud)
谁知道这里发生了什么?
在用Java创建地图生成器时,我发现它们的随机数生成器存在一个相当令人不安的问题,指定当两个RNG具有非常相似的种子(小整数不同)时,它们的第一个输出值将变得非常相似!
示例代码:
Random r = new Random();
long n = 100000; //Choose any number
r.setSeed(n);
System.out.println(r.nextInt());
r.setSeed(n+1);
System.out.println(r.nextInt());
Run Code Online (Sandbox Code Playgroud)
这几乎打破了我对原始Java RNG的信心,因为我使用坐标为地图生成器播种.有人可以建议重新定义Random.next(int bits)方法,或者针对此问题进行其他修复吗?
谢谢您的帮助!
我正在尝试使用成员配置文件和使用S3和回形针的成员个人资料图片来播种我的数据库,但它似乎不起作用.
我可以在应用程序中创建/编辑现有成员以使用paperclip + S3添加图片,它可以正常工作但是播种它不起作用.我搜索过但找不到答案.
我正在使用连续种子(1,2,3,4,...)在模拟中生成随机数.种子彼此靠近的事实是否使得生成的伪随机数也相似?
我认为它没有改变任何东西,但我正在使用python
编辑:我做了一些测试,数字看起来并不相似.但我担心仅通过查看数字就无法注意到这种相似性.随机数生成是否有任何理论特征可以保证不同种子提供完全独立的伪随机数?
好的,所以我正在研究如何使用Math.random方法生成随机数.到目前为止,我学会了它从一个"随机"种子开始,并将该种子插入到一些复杂的方程中以创建一个随机数.如果种子总是一样,结果总是一样吗?
我听说Math.random的种子是通过当前时间生成的,这是正确的吗?他们必须使用当前时间一直到mili-seconds或其他东西,因为如果你没有,你会得到相同的结果.
种子究竟是什么?是"10:45"之类的时间,还是"10月11日10:45"或某种组合的时间和日期?
我怎样才能找到种子,所以我可以预测输出?
我希望能够插入这个:
alert(Math.floor((Math.random()*10)+1));
Run Code Online (Sandbox Code Playgroud)
进入我的网址栏,并能够预测结果.那可能吗?
我正在尝试在 Nestjs 中创建一个 Seeder 文件,问题是当我使用 start:dev 运行项目时,nestjs 也会使用 main.ts 文件启动 Seed.ts 文件。当我在 prod/dev 上运行项目时,如何使 Nestjs 不启动种子文件,但只有在运行种子脚本时才必须调用种子。
这是seed.ts代码
import { NestFactory } from '@nestjs/core'
import { Logger } from '@nestjs/common'
import { SeederModule } from './database/seeder.module'
import { Seeder } from './database/seeder'
async function bootstrap() {
NestFactory.createApplicationContext(SeederModule)
.then((appContext) => {
const logger = appContext.get(Logger)
const seeder = appContext.get(Seeder)
seeder
.seedRoles()
.then(() => {
logger.debug('Seeding Roles complete!')
})
.catch((error) => {
logger.error('Seeding Roles failed!')
throw error
})
seeder
.seedAdmin()
.then(() => { …Run Code Online (Sandbox Code Playgroud)