小编Ada*_*ras的帖子

验证Knuth shuffle算法尽可能无偏

我正在为我正在研究的C++项目实现一个Knuth shuffle.我试图从我的shuffle获得最无偏见的结果(我不是(伪)随机数生成的专家).我只是想确保这是最无偏见的shuffle实现.

draw_t是字节类型(typedef'd to unsigned char).items是列表中的项目数.我已经包含了random::get( draw_t max )下面的代码.

for( draw_t pull_index = (items - 1); pull_index > 1; pull_index-- )
{
    draw_t push_index = random::get( pull_index );

    draw_t push_item = this->_list[push_index];
    draw_t pull_item = this->_list[pull_index];

    this->_list[push_index] = pull_item;
    this->_list[pull_index] = push_item;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的随机函数已被修改以消除模偏差.RAND_MAX分配给random::_internal_max.

draw_t random::get( draw_t max )
{
    if( random::_is_seeded == false )
    {
        random::seed( );
    }

    int rand_value = random::_internal_max;
    int …
Run Code Online (Sandbox Code Playgroud)

c++ random algorithm knuth shuffle

4
推荐指数
2
解决办法
2661
查看次数

多个数据库与一个数据库,其中ID用于分隔组织

在组织可以注册并用于管理数据的Web应用程序的情况下,以下两个选项的优缺点是什么?

  • 每个组织一个数据库,其中每个组织的数据完全分成单独的数据库,一个(非常小的)集中式数据库保存组织及其数据库标识符的基本列表.

  • 整个应用程序的一个数据库,其中所有实体都存储在一个大型数据库中,并使用每个表上的组织标识符列进行分隔.

其他一些方面需要考虑:

  • 数据永远不会在数据库中的组织之间共享,登录凭据也不会.
  • 一些组织将允许公众在申请中注册帐户以提交数据,而其他组织则不会.
  • 我们计划为组织公开一个公共API,以便将他们当前的流程与我们的应用程序集成.组织将能够生成API密钥以允许访问其数据,但不会有跨越组织的公共API.
  • 公司将在应用程序中存储可能敏感的数据.

根据您的经验和/或知识,这个设计决策的正确方法是什么(或者是否有"正确"的方式?)

database architecture database-design

4
推荐指数
2
解决办法
3017
查看次数

我正在尝试做的最有效的树结构

我想知道对于具有以下要求的集合,最通用的树结构是什么:

  1. 该树将容纳0到2 32 - 1项之间的任何地方.
  2. 每个项目都是一个简单的结构,包含一个32位无符号整数(项目的唯一ID,将用作树值)和两个指针.
  3. 项目将经常插入树中并从树中删除; 树中的某些项目将在程序的持续时间内保留在那里,而其他项目在删除之前只会在树中非常短暂.
  4. 删除项目后,其唯一ID(该32位无符号整数)将被回收并重新用于新项目.

树结构需要支持有效的插入和删除,以及通过唯一ID快速查找.此外,找到第一个可用的未使用的唯一ID需要是快速操作.

什么样的树最适合这些要求?

编辑:这棵树将只在内存中保存; 在任何时候它都不会被持久化到磁盘上.我不需要担心碰到磁盘,磁盘缓存或任何类似的东西.这也是我不打算使用像SQLite这样的东西的原因.

c++ tree performance

3
推荐指数
1
解决办法
3034
查看次数

错误:初始化时无法将'int(^)(int)'转换为'R(^)(T)'

我试图了解如何在我的模板类中最好地利用块.我有以下代码片段:

template<typename T, typename R>
class MyClass {
public:
   typedef R (^Block)(T);

   MyClass(Block blk) {}
};

void testMyClass() {
    MyClass<int,int>::Block blk(^(int arg) {
        return 1 + arg;
    });
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误消息:

error: cannot convert ‘int (^)(int)’ to ‘R (^)(T)’ in initialization
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗 我想做一些不允许的事吗?如果我在没有模板的情况下做同样的事情,GCC会接受该程序.

c++ macos gcc objective-c-blocks

3
推荐指数
1
解决办法
346
查看次数

Lambda表达式返回错误

这是我的代码:

SomeFunction(m => { 
    ViewData["AllEmployees"].Where(c => c.LeaderID == m.UserID); 
 })
Run Code Online (Sandbox Code Playgroud)

并返回此错误:

并非所有代码路径都返回type的lambda表达式中的值 System.Func<IEnumerable>

c# lambda

3
推荐指数
1
解决办法
2853
查看次数

C#中的通用继承:无法将类型'MyWidget'隐式转换为'IWidget'

我在使用泛型设置继承时遇到问题.

本质上我想要做的是拥有一个本身接受接口的通用接口.棘手的部分是"内部"界面可以在其上面分层更具体的界面.

以下是我正在尝试构建的结构的代表性示例:

public interface IThing  { }

public interface IMoreSpecificThing : IThing  {  }

public interface IWidget<T> where T : IThing  {  }

public class MySpecificThing : IMoreSpecificThing { }

public class MyWidget : IWidget<MySpecificThing> { }

public class MyClass
{
    public IWidget<IThing> MyProperty { get; set; }

    public MyClass()
    {
        MyProperty = new MyWidget();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我将MyWidget分配给MyProperty时,我收到以下错误:

无法隐式转换'MyWidget''IWidget<IThing>'.存在显式转换(您是否错过了演员?)

我做错了什么,有没有办法正确地做到这一点?

c# generics inheritance

3
推荐指数
1
解决办法
699
查看次数

BackgroundWorker类如何在UI线程上触发其事件?

我正在编写一个类似于BackgroundWorker类的异步操作管理器.我知道BackgroundWorker做一些内部巫术(使用AsyncOperation类,从我读过的内容)在创建它的线程上激活它的事件BackgroundWorker,这通常是一个UI线程.

我的问题是:什么voodoo是必要的事件被触发像特定的线程BackgroundWorker

.net events asynchronous backgroundworker

2
推荐指数
1
解决办法
326
查看次数

关于OOPS&C#中的编码风格

我通过一个代码示例,我已经看到了一种不同的方式来创建一个实例.

所以这里的代码

public interface IEmployee
{
    System.Int32? EmployeeID { get; set; }
    System.String FirstName { get; set; }
    System.String LastName { get; set; }
    System.DateTime DateOfBirth { get; set; }
    System.Int32? DepartmentID { get; set; }
    System.String FullName();
    System.Single Salary();
}

public class Employee : IEmployee
{
    #region Properties

    public System.Int32? EmployeeID { get; set; }
    public System.String FirstName { get; set; }
    public System.String LastName { get; set; }
    public System.DateTime DateOfBirth { get; set; }
    public System.Int32? DepartmentID …
Run Code Online (Sandbox Code Playgroud)

c# oop

1
推荐指数
1
解决办法
299
查看次数

在对象初始值设定项中初始化的字段或属性的名称必须以“.”开头。

我试图将这几行 C# 转换为 Vb 几个小时,但我无法让它工作。

Friend Shared Function GetErrorCorrectPolynomial(ByVal errorCorrectLength As Integer) As tPolynomial
    Dim a As tPolynomial

    a =  New tPolynomial(New DataCache() With {1}, 0)

    For i As Integer = 0 To errorCorrectLength - 1
        a = a.Multiply(New tPolynomial(New DataCache() With { 1, tMath.GExp(i) }, 0))
    Next i

    Return a
End Function
Run Code Online (Sandbox Code Playgroud)

我收到此错误 在对象初始值设定项中初始化的字段或属性的名称必须以 '.' 开头。

在这部分{1}

原始代码

internal static tPolynomial GetErrorCorrectPolynomial(int errorCorrectLength)
{
    tPolynomial a = new tPolynomial(new DataCache() { 1 }, 0);

    for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

vb.net c#-to-vb.net

0
推荐指数
1
解决办法
1922
查看次数