static int rf_rng (lua_State *L) { nl_RNG *r = getrng(L); lua_Number dfn = luaL_checknumber(L, 1); lua_Number dfd = luaL_checknumber(L, 2); lua_Number xnc = luaL_optnumber(L, 3, 0); checknp(L, dfn); checknp(L, dfd); checkneg(L, xnc); setdeviate(number, (xnc == 0) ? genf(r, dfn, dfd) : gennf(r, dfn, dfd, xnc), 4); return 1; }
int main(){ int i,num; genf(); while(scanf("%d",&num)==1){ printf("%5d -> %lld\n",num,fact[num]%10); } return 0; }
// ----------------------------------------------------------------------- int __e4i_init_disk(struct e4i_t *e, e4i_id_gen_f *genf, uint16_t img_type, uint16_t img_utype) { if ((e->id_size > 0) && !genf) { return E4I_E_GENF_MISSING; } if ((e->id_size == 0) && genf) { return E4I_E_GENF_UNNEEDED; } if (e->flags & E4I_F_FORMATTED) { return E4I_E_FORMATTED; } int ret = E4I_E_OK; int bufsize = e->id_size + e->block_size; uint8_t *buf = calloc(bufsize, 1); uint8_t *id_buf = calloc(e->id_size, 1); for (long s=0 ; s<e->blocks ; s++) { if (genf) { if (genf(e, id_buf, e->id_size, s) != e->id_size) { ret = E4I_E_IDGEN; break; } memcpy(buf, id_buf, e->id_size); } // write block ret = __e4i_write_ignore_flags(e, buf, s, bufsize, 0, bufsize); if (ret != E4I_E_OK) { break; } } if (ret == E4I_E_OK) { e->flags |= E4I_F_FORMATTED; e->img_type = img_type; e->img_utype = img_utype; ret = __e4i_header_write(e); } free(buf); free(id_buf); return ret; }