JavaScript Math.random()函数返回0到1之间的随机值,根据当前时间自动播种(类似于Java我相信).但是,我认为没有办法为你设置自己的种子.
如何创建一个随机数生成器,我可以提供自己的种子值,以便我可以生成一个可重复的(伪)随机数序列?
我正在尝试使用Rails 2.3.4+(db:seedrake任务)中加载种子数据的新标准方法.
我正在加载常量数据,这是我的应用程序真正正常运行所必需的.
db:seed在测试之前让任务运行的最佳方法是什么,所以数据是预先填充的?
我正在尝试使用一些测试数据来开发数据库.
我context.People.AddOrUpdate(p => p.Id, people));用得很成功了.
我有另一个我需要播种的表,其中我不知道主键.
例如,我想基于First和Last名称匹配AddOrUpdate.
我不确定如何正确编写表达式.
context.People.AddOrUpdate(p => p.FirstName && p.LastName, people);
Run Code Online (Sandbox Code Playgroud)
显然不正确,但我希望它能传达我正在寻找的解决方案.
我有一个rake任务,在我的rails应用程序中填充一些初始数据.例如,国家,州,移动运营商等
我现在设置它的方式是,我在/ db/fixtures中的文件中有一堆create语句,还有一个处理它们的rake任务.例如,我有一个模型是主题.我在/ db/fixtures中有一个theme.rb文件,如下所示:
Theme.delete_all
Theme.create(:id => 1, :name=>'Lite', :background_color=>'0xC7FFD5', :title_text_color=>'0x222222',
:component_theme_color=>'0x001277', :carrier_select_color=>'0x7683FF', :label_text_color=>'0x000000',
:join_upper_gradient=>'0x6FAEFF', :join_lower_gradient=>'0x000000', :join_text_color=>'0xFFFFFF',
:cancel_link_color=>'0x001277', :border_color=>'0x888888', :carrier_text_color=>'0x000000', :public => true)
Theme.create(:id => 2, :name=>'Metallic', :background_color=>'0x000000', :title_text_color=>'0x7299FF',
:component_theme_color=>'0xDBF2FF', :carrier_select_color=>'0x000000', :label_text_color=>'0xDBF2FF',
:join_upper_gradient=>'0x2B25FF', :join_lower_gradient=>'0xBEFFAC', :join_text_color=>'0x000000',
:cancel_link_color=>'0xFF7C12', :border_color=>'0x000000', :carrier_text_color=>'0x000000', :public => true)
Theme.create(:id => 3, :name=>'Blues', :background_color=>'0x0060EC', :title_text_color=>'0x000374',
:component_theme_color=>'0x000374', :carrier_select_color=>'0x4357FF', :label_text_color=>'0x000000',
:join_upper_gradient=>'0x4357FF', :join_lower_gradient=>'0xffffff', :join_text_color=>'0x000000',
:cancel_link_color=>'0xffffff', :border_color=>'0x666666', :carrier_text_color=>'0x000000', :public => true)
puts "Success: Theme data loaded"
Run Code Online (Sandbox Code Playgroud)
这里的想法是我想为用户安装一些股票主题.我有这个方法的问题.
设置ID不起作用.这意味着如果我决定添加一个主题,让我们称之为"红色",那么我只想将主题语句添加到此fixture文件并调用rake任务来重新设置数据库.如果我这样做,因为主题属于其他对象,并且在重新初始化时它们的id发生了变化,所有链接都会被破坏.
我的问题首先是,这是处理数据库播种的好方法吗?在上一篇文章中,我向你推荐了这个.
如果是这样,我怎么能对ID进行硬编码,这有什么缺点吗?
如果没有,那么种子数据库的最佳方法是什么?
我将真正感谢包含最佳实践的长期和深思熟虑的答案.
我想用虚拟数据填充新功能,但不想使用db/seeds.rb文件,因为它已经有种子,其他数据与此功能无关.
要运行默认seeds.rb文件,请运行该命令rake db:seed.
如果我在被db调用的目录中创建一个文件seeds_feature_x.rb,那么rake命令会运行(仅)该文件是什么样的?
我有一个相当大的程序,我random在不同的文件中使用模块中的函数.我希望能够在一个地方设置一次随机种子,使程序始终返回相同的结果.甚至可以实现python吗?
我只需要进行测试,但是在测试完成后撤消它.
我在网上看过一些关于如何重新播种表格的教程,但不是关于如何撤销它的教程.
假设表定义如下:
create table beer
(
beer_id numeric(10) not null,
mnemonic nvarchar(8)
);
go
Run Code Online (Sandbox Code Playgroud)
假设我希望新身份暂时开始12345,最后删除新行并将下一个身份设置为原来的身份.
这是我使用种子作为参数生成随机数的代码:
double randomGenerator(long seed) {
Random generator = new Random(seed);
double num = generator.nextDouble() * (0.5);
return num;
}
Run Code Online (Sandbox Code Playgroud)
每次我给种子并尝试生成100个数字时,它们都是相同的.
我怎样才能解决这个问题?
有没有办法找出Python用于播种其随机数生成器的种子?
我知道我可以指定自己的种子,但我很高兴Python管理它.但是,我确实想知道它使用了什么种子,所以如果我喜欢我在特定运行中获得的结果,我可以在以后重现该运行.如果我有种子,那么我可以.
如果答案是我不能,那么自己生成种子的最佳方法是什么?我希望它们总是与不同的运行方式不同 - 我只是想知道使用了什么.
更新:是的,我的意思是random.random()!错误... [标题更新]
我正在尝试播种我的用户表.如果我这样尝试2行,它就会失败.如果我只使用单个数组而不是$ users数组中的2个数组来创建一些假数据,它就可以正常工作.
我做错了什么,这样做的正确方法是什么?
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
$users = [
['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => 'stephan-v@gmail.com', 'password' => bcrypt('carrotz124')],
['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => 'johndoe@gmail.com', 'password' => bcrypt('carrotz1243')],
];
User::create($users);
}
}
Run Code Online (Sandbox Code Playgroud)